From 216a7616d4bdbbf0dfab973417afb9fbc6f3d3a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Thu, 31 May 2018 11:11:57 +0200 Subject: [PATCH 01/15] deps: update V8 to 6.7.288.43 --- deps/v8/.gitignore | 19 +- deps/v8/.gn | 3 +- deps/v8/.vpython | 13 + deps/v8/AUTHORS | 4 +- deps/v8/BUILD.gn | 227 +- deps/v8/ChangeLog | 1490 ++++++ deps/v8/DEPS | 36 +- deps/v8/LICENSE | 3 + deps/v8/OWNERS | 2 + .../trace_event/common/trace_event_common.h | 18 + deps/v8/gni/isolate.gni | 196 - deps/v8/gni/msvs_dependencies.isolate | 97 - deps/v8/gni/v8.gni | 13 + deps/v8/include/OWNERS | 4 + deps/v8/include/libplatform/libplatform.h | 6 +- deps/v8/include/libplatform/v8-tracing.h | 2 - deps/v8/include/v8-platform.h | 32 +- deps/v8/include/v8-profiler.h | 18 +- deps/v8/include/v8-version.h | 6 +- deps/v8/include/v8.h | 197 +- deps/v8/include/v8config.h | 8 +- deps/v8/infra/config/cq.cfg | 7 +- deps/v8/infra/mb/gn_isolate_map.pyl | 74 + deps/v8/infra/mb/mb_config.pyl | 195 +- deps/v8/src/DEPS | 2 + deps/v8/src/accessors.cc | 23 +- deps/v8/src/accessors.h | 20 + deps/v8/src/allocation.cc | 4 +- deps/v8/src/allocation.h | 11 +- deps/v8/src/api-arguments-inl.h | 182 +- deps/v8/src/api-arguments.cc | 57 - deps/v8/src/api-arguments.h | 47 +- deps/v8/src/api-natives.cc | 2 +- deps/v8/src/api-natives.h | 8 +- deps/v8/src/api.cc | 480 +- deps/v8/src/api.h | 9 +- deps/v8/src/arm/assembler-arm-inl.h | 22 +- deps/v8/src/arm/assembler-arm.cc | 16 +- deps/v8/src/arm/assembler-arm.h | 24 +- deps/v8/src/arm/code-stubs-arm.cc | 44 +- deps/v8/src/arm/codegen-arm.cc | 1 + deps/v8/src/arm/frame-constants-arm.h | 24 +- deps/v8/src/arm/macro-assembler-arm.cc | 47 +- deps/v8/src/arm/macro-assembler-arm.h | 11 +- deps/v8/src/arm64/assembler-arm64-inl.h | 22 +- deps/v8/src/arm64/assembler-arm64.cc | 3 +- deps/v8/src/arm64/assembler-arm64.h | 53 +- deps/v8/src/arm64/code-stubs-arm64.cc | 43 +- deps/v8/src/arm64/codegen-arm64.cc | 1 + deps/v8/src/arm64/frame-constants-arm64.h | 22 +- deps/v8/src/arm64/macro-assembler-arm64.cc | 45 +- deps/v8/src/arm64/macro-assembler-arm64.h | 9 +- deps/v8/src/arm64/simulator-arm64.cc | 12 + deps/v8/src/arm64/simulator-arm64.h | 1 + deps/v8/src/asmjs/asm-js.cc | 64 +- deps/v8/src/asmjs/asm-js.h | 9 +- deps/v8/src/assembler.cc | 1039 +--- deps/v8/src/assembler.h | 413 +- deps/v8/src/ast/ast-traversal-visitor.h | 18 + deps/v8/src/ast/ast-value-factory.h | 2 +- deps/v8/src/ast/ast.cc | 17 + deps/v8/src/ast/ast.h | 92 +- deps/v8/src/ast/compile-time-value.cc | 2 +- deps/v8/src/ast/prettyprinter.cc | 30 + deps/v8/src/ast/scopes.cc | 1 + deps/v8/src/ast/scopes.h | 16 +- deps/v8/src/bailout-reason.h | 4 + deps/v8/src/base.isolate | 39 - deps/v8/src/base/compiler-specific.h | 10 - deps/v8/src/base/debug/stack_trace_posix.cc | 7 +- deps/v8/src/base/debug/stack_trace_win.cc | 13 - deps/v8/src/base/flags.h | 86 +- deps/v8/src/base/ieee754.cc | 10 +- deps/v8/src/base/logging.h | 18 +- deps/v8/src/base/macros.h | 82 +- .../v8/src/base/platform/condition-variable.h | 2 +- deps/v8/src/base/platform/mutex.h | 4 +- deps/v8/src/base/platform/platform-aix.cc | 10 +- deps/v8/src/base/platform/platform-cygwin.cc | 4 +- .../src/base/platform/platform-posix-time.cc | 4 +- .../src/base/platform/platform-posix-time.h | 2 +- deps/v8/src/base/platform/platform-posix.cc | 7 + deps/v8/src/base/platform/platform-solaris.cc | 5 +- deps/v8/src/base/platform/platform-win32.cc | 35 +- deps/v8/src/base/platform/platform.h | 14 + deps/v8/src/base/platform/semaphore.h | 2 +- deps/v8/src/base/template-utils.h | 19 +- deps/v8/src/base/timezone-cache.h | 4 +- .../src/base/utils/random-number-generator.h | 21 +- deps/v8/src/bootstrapper.cc | 284 +- deps/v8/src/bootstrapper.h | 2 +- deps/v8/src/boxed-float.h | 6 +- deps/v8/src/builtins/arm/builtins-arm.cc | 319 +- deps/v8/src/builtins/arm64/builtins-arm64.cc | 315 +- deps/v8/src/builtins/builtins-api.cc | 67 +- deps/v8/src/builtins/builtins-array-gen.cc | 1567 +++--- deps/v8/src/builtins/builtins-array-gen.h | 19 +- deps/v8/src/builtins/builtins-array.cc | 84 +- deps/v8/src/builtins/builtins-arraybuffer.cc | 41 +- deps/v8/src/builtins/builtins-async-gen.cc | 4 +- .../builtins/builtins-async-generator-gen.cc | 80 +- deps/v8/src/builtins/builtins-bigint.cc | 39 +- deps/v8/src/builtins/builtins-boolean.cc | 37 +- deps/v8/src/builtins/builtins-call-gen.cc | 137 +- .../src/builtins/builtins-collections-gen.cc | 63 +- deps/v8/src/builtins/builtins-console.cc | 4 +- .../src/builtins/builtins-constructor-gen.cc | 246 +- .../src/builtins/builtins-constructor-gen.h | 3 - .../src/builtins/builtins-conversion-gen.cc | 10 +- deps/v8/src/builtins/builtins-dataview.cc | 176 +- deps/v8/src/builtins/builtins-date.cc | 155 +- deps/v8/src/builtins/builtins-definitions.h | 76 +- deps/v8/src/builtins/builtins-function-gen.cc | 28 +- deps/v8/src/builtins/builtins-handler-gen.cc | 9 + deps/v8/src/builtins/builtins-ic-gen.cc | 1 + deps/v8/src/builtins/builtins-internal-gen.cc | 64 +- .../src/builtins/builtins-interpreter-gen.cc | 17 +- deps/v8/src/builtins/builtins-interpreter.cc | 17 +- deps/v8/src/builtins/builtins-iterator-gen.cc | 51 +- deps/v8/src/builtins/builtins-object-gen.cc | 39 +- deps/v8/src/builtins/builtins-promise-gen.cc | 489 +- deps/v8/src/builtins/builtins-promise-gen.h | 32 +- deps/v8/src/builtins/builtins-proxy-gen.cc | 102 +- deps/v8/src/builtins/builtins-regexp-gen.cc | 396 +- deps/v8/src/builtins/builtins-regexp-gen.h | 13 + .../builtins/builtins-sharedarraybuffer.cc | 6 +- deps/v8/src/builtins/builtins-string-gen.cc | 146 +- deps/v8/src/builtins/builtins-string-gen.h | 7 +- deps/v8/src/builtins/builtins-string.cc | 4 +- deps/v8/src/builtins/builtins-symbol.cc | 32 +- .../src/builtins/builtins-typedarray-gen.cc | 147 +- deps/v8/src/builtins/builtins-utils.h | 12 +- deps/v8/src/builtins/builtins.cc | 820 +-- deps/v8/src/builtins/builtins.h | 30 +- .../src/builtins/constants-table-builder.cc | 3 + .../v8/src/builtins/constants-table-builder.h | 4 +- .../src/builtins/growable-fixed-array-gen.cc | 4 +- deps/v8/src/builtins/ia32/builtins-ia32.cc | 316 +- deps/v8/src/builtins/mips/builtins-mips.cc | 312 +- .../v8/src/builtins/mips64/builtins-mips64.cc | 313 +- deps/v8/src/builtins/ppc/builtins-ppc.cc | 322 +- deps/v8/src/builtins/s390/builtins-s390.cc | 310 +- .../src/builtins/setup-builtins-internal.cc | 25 +- deps/v8/src/builtins/x64/builtins-x64.cc | 313 +- deps/v8/src/cancelable-task.cc | 1 - deps/v8/src/char-predicates-inl.h | 4 - deps/v8/src/code-events.h | 56 +- deps/v8/src/code-stub-assembler.cc | 1313 +++-- deps/v8/src/code-stub-assembler.h | 606 ++- deps/v8/src/code-stubs.cc | 15 +- deps/v8/src/code-stubs.h | 41 +- deps/v8/src/compilation-cache.cc | 2 +- deps/v8/src/compilation-dependencies.cc | 2 +- deps/v8/src/compilation-statistics.h | 2 +- .../compiler-dispatcher.cc | 46 +- .../compiler-dispatcher/compiler-dispatcher.h | 14 +- .../optimizing-compile-dispatcher.cc | 34 +- .../optimizing-compile-dispatcher.h | 14 +- .../unoptimized-compile-job.cc | 36 +- .../unoptimized-compile-job.h | 5 +- deps/v8/src/compiler.cc | 711 +-- deps/v8/src/compiler.h | 193 +- deps/v8/src/compiler/OWNERS | 2 + deps/v8/src/compiler/access-builder.cc | 36 +- deps/v8/src/compiler/access-builder.h | 13 +- deps/v8/src/compiler/access-info.h | 2 +- deps/v8/src/compiler/allocation-builder.h | 10 + .../v8/src/compiler/arm/code-generator-arm.cc | 105 +- .../compiler/arm/instruction-selector-arm.cc | 161 +- .../compiler/arm64/code-generator-arm64.cc | 49 +- .../compiler/arm64/instruction-codes-arm64.h | 22 +- .../arm64/instruction-scheduler-arm64.cc | 26 +- .../arm64/instruction-selector-arm64.cc | 213 +- .../src/compiler/basic-block-instrumentor.cc | 7 +- .../src/compiler/basic-block-instrumentor.h | 4 +- .../v8/src/compiler/bytecode-graph-builder.cc | 58 +- deps/v8/src/compiler/bytecode-graph-builder.h | 7 +- deps/v8/src/compiler/code-assembler.cc | 95 +- deps/v8/src/compiler/code-assembler.h | 33 +- deps/v8/src/compiler/code-generator.cc | 104 +- deps/v8/src/compiler/code-generator.h | 47 +- .../src/compiler/common-operator-reducer.cc | 4 +- deps/v8/src/compiler/common-operator.cc | 44 +- deps/v8/src/compiler/common-operator.h | 77 +- .../v8/src/compiler/control-flow-optimizer.cc | 5 +- .../src/compiler/effect-control-linearizer.cc | 391 +- .../src/compiler/effect-control-linearizer.h | 15 +- .../src/compiler/escape-analysis-reducer.cc | 3 +- deps/v8/src/compiler/frame-states.cc | 51 +- deps/v8/src/compiler/frame-states.h | 20 +- deps/v8/src/compiler/graph-assembler.cc | 11 +- deps/v8/src/compiler/graph-assembler.h | 1 + deps/v8/src/compiler/graph-visualizer.cc | 9 +- deps/v8/src/compiler/graph-visualizer.h | 9 +- .../src/compiler/ia32/code-generator-ia32.cc | 190 +- .../compiler/ia32/instruction-codes-ia32.h | 15 +- .../ia32/instruction-scheduler-ia32.cc | 13 + .../ia32/instruction-selector-ia32.cc | 230 +- deps/v8/src/compiler/instruction-codes.h | 2 + deps/v8/src/compiler/instruction-scheduler.cc | 54 +- deps/v8/src/compiler/instruction-scheduler.h | 16 +- .../src/compiler/instruction-selector-impl.h | 285 +- deps/v8/src/compiler/instruction-selector.cc | 440 +- deps/v8/src/compiler/instruction-selector.h | 258 +- deps/v8/src/compiler/instruction.cc | 4 +- deps/v8/src/compiler/instruction.h | 12 +- deps/v8/src/compiler/int64-lowering.cc | 10 +- deps/v8/src/compiler/js-builtin-reducer.cc | 1357 ----- deps/v8/src/compiler/js-builtin-reducer.h | 35 - deps/v8/src/compiler/js-call-reducer.cc | 1567 +++++- deps/v8/src/compiler/js-call-reducer.h | 41 + .../src/compiler/js-context-specialization.cc | 2 +- deps/v8/src/compiler/js-create-lowering.cc | 135 +- deps/v8/src/compiler/js-create-lowering.h | 2 + deps/v8/src/compiler/js-generic-lowering.cc | 29 +- deps/v8/src/compiler/js-inlining-heuristic.cc | 16 +- deps/v8/src/compiler/js-inlining-heuristic.h | 2 +- deps/v8/src/compiler/js-inlining.cc | 17 +- deps/v8/src/compiler/js-inlining.h | 6 +- .../js-native-context-specialization.cc | 122 +- .../js-native-context-specialization.h | 1 + deps/v8/src/compiler/js-operator.cc | 102 +- deps/v8/src/compiler/js-operator.h | 75 +- deps/v8/src/compiler/js-type-hint-lowering.cc | 3 +- deps/v8/src/compiler/js-typed-lowering.cc | 83 +- deps/v8/src/compiler/linkage.cc | 5 +- deps/v8/src/compiler/linkage.h | 5 +- deps/v8/src/compiler/load-elimination.cc | 4 +- deps/v8/src/compiler/load-elimination.h | 1 + .../src/compiler/loop-variable-optimizer.cc | 7 +- .../v8/src/compiler/machine-graph-verifier.cc | 10 +- deps/v8/src/compiler/machine-operator.cc | 214 +- deps/v8/src/compiler/machine-operator.h | 49 +- deps/v8/src/compiler/memory-optimizer.cc | 15 +- deps/v8/src/compiler/memory-optimizer.h | 9 +- .../src/compiler/mips/code-generator-mips.cc | 436 +- .../mips/instruction-selector-mips.cc | 96 +- .../compiler/mips64/code-generator-mips64.cc | 435 +- .../mips64/instruction-selector-mips64.cc | 102 +- deps/v8/src/compiler/node-matchers.h | 16 +- deps/v8/src/compiler/node-properties.cc | 1 - deps/v8/src/compiler/node.h | 6 - deps/v8/src/compiler/opcodes.h | 31 +- deps/v8/src/compiler/operation-typer.cc | 2 +- deps/v8/src/compiler/operator-properties.cc | 1 + deps/v8/src/compiler/osr.cc | 8 +- deps/v8/src/compiler/osr.h | 4 +- deps/v8/src/compiler/pipeline-statistics.cc | 6 +- deps/v8/src/compiler/pipeline-statistics.h | 2 +- deps/v8/src/compiler/pipeline.cc | 283 +- deps/v8/src/compiler/pipeline.h | 32 +- .../v8/src/compiler/ppc/code-generator-ppc.cc | 53 +- .../compiler/ppc/instruction-selector-ppc.cc | 73 +- .../src/compiler/property-access-builder.cc | 25 +- deps/v8/src/compiler/raw-machine-assembler.cc | 12 +- deps/v8/src/compiler/raw-machine-assembler.h | 44 +- .../v8/src/compiler/redundancy-elimination.cc | 1 - .../compiler/register-allocator-verifier.cc | 18 +- .../compiler/register-allocator-verifier.h | 5 +- deps/v8/src/compiler/register-allocator.cc | 37 +- deps/v8/src/compiler/register-allocator.h | 9 +- deps/v8/src/compiler/representation-change.cc | 30 +- deps/v8/src/compiler/representation-change.h | 2 +- .../src/compiler/s390/code-generator-s390.cc | 43 +- .../s390/instruction-selector-s390.cc | 149 +- deps/v8/src/compiler/schedule.cc | 19 + deps/v8/src/compiler/schedule.h | 4 + deps/v8/src/compiler/simd-scalar-lowering.cc | 47 +- deps/v8/src/compiler/simplified-lowering.cc | 150 +- deps/v8/src/compiler/simplified-operator.cc | 69 +- deps/v8/src/compiler/simplified-operator.h | 107 +- .../src/compiler/store-store-elimination.cc | 4 +- deps/v8/src/compiler/type-cache.h | 4 + deps/v8/src/compiler/typed-optimization.cc | 148 +- deps/v8/src/compiler/typed-optimization.h | 8 +- deps/v8/src/compiler/typer.cc | 71 +- deps/v8/src/compiler/types.cc | 34 +- deps/v8/src/compiler/types.h | 52 +- deps/v8/src/compiler/verifier.cc | 83 +- deps/v8/src/compiler/wasm-compiler.cc | 1192 ++--- deps/v8/src/compiler/wasm-compiler.h | 204 +- deps/v8/src/compiler/wasm-linkage.cc | 42 +- .../v8/src/compiler/x64/code-generator-x64.cc | 288 +- .../src/compiler/x64/instruction-codes-x64.h | 484 +- .../compiler/x64/instruction-scheduler-x64.cc | 40 + .../compiler/x64/instruction-selector-x64.cc | 295 +- deps/v8/src/contexts-inl.h | 27 +- deps/v8/src/contexts.h | 94 +- deps/v8/src/conversions.cc | 2 +- deps/v8/src/counters.h | 14 + deps/v8/src/d8-console.cc | 2 +- deps/v8/src/d8-posix.cc | 8 - deps/v8/src/d8-windows.cc | 8 - deps/v8/src/d8.cc | 129 +- deps/v8/src/d8.h | 18 +- deps/v8/src/d8.isolate | 16 - deps/v8/src/date.cc | 72 +- deps/v8/src/date.h | 65 +- deps/v8/src/debug/debug-coverage.cc | 62 +- deps/v8/src/debug/debug-evaluate.cc | 276 +- deps/v8/src/debug/debug-evaluate.h | 20 +- deps/v8/src/debug/debug-interface.h | 24 +- deps/v8/src/debug/debug-scopes.cc | 17 +- deps/v8/src/debug/debug-scopes.h | 8 +- deps/v8/src/debug/debug.cc | 407 +- deps/v8/src/debug/debug.h | 88 +- deps/v8/src/debug/liveedit.cc | 61 +- deps/v8/src/debug/liveedit.h | 5 +- deps/v8/src/debug/liveedit.js | 2 +- deps/v8/src/debug/mirrors.js | 4 +- deps/v8/src/deoptimizer.cc | 328 +- deps/v8/src/deoptimizer.h | 74 +- deps/v8/src/disassembler.cc | 6 +- deps/v8/src/elements.cc | 5 +- deps/v8/src/elements.h | 9 +- deps/v8/src/execution.cc | 10 +- deps/v8/src/execution.h | 17 +- deps/v8/src/external-reference-table.cc | 423 +- deps/v8/src/external-reference-table.h | 55 +- deps/v8/src/external-reference.cc | 1028 ++++ deps/v8/src/external-reference.h | 305 ++ deps/v8/src/feedback-vector-inl.h | 52 +- deps/v8/src/feedback-vector.cc | 80 +- deps/v8/src/feedback-vector.h | 68 +- deps/v8/src/flag-definitions.h | 72 +- deps/v8/src/frame-constants.h | 145 +- deps/v8/src/frames-inl.h | 10 +- deps/v8/src/frames.cc | 210 +- deps/v8/src/frames.h | 57 +- deps/v8/src/gdb-jit.cc | 28 +- deps/v8/src/global-handles.cc | 14 +- deps/v8/src/globals.h | 106 +- deps/v8/src/handles.cc | 9 +- deps/v8/src/heap-symbols.h | 6 +- deps/v8/src/heap/array-buffer-collector.cc | 8 +- deps/v8/src/heap/array-buffer-tracker-inl.h | 12 +- deps/v8/src/heap/array-buffer-tracker.cc | 35 +- deps/v8/src/heap/array-buffer-tracker.h | 12 +- deps/v8/src/heap/code-stats.cc | 8 +- deps/v8/src/heap/concurrent-marking.cc | 199 +- deps/v8/src/{ => heap}/factory-inl.h | 9 +- deps/v8/src/{ => heap}/factory.cc | 1894 ++++--- deps/v8/src/{ => heap}/factory.h | 278 +- deps/v8/src/heap/gc-tracer.cc | 58 +- deps/v8/src/heap/gc-tracer.h | 14 + deps/v8/src/heap/heap-inl.h | 235 +- deps/v8/src/heap/heap.cc | 1949 ++----- deps/v8/src/heap/heap.h | 556 +- deps/v8/src/heap/incremental-marking-inl.h | 18 +- deps/v8/src/heap/incremental-marking-job.cc | 4 +- deps/v8/src/heap/incremental-marking.cc | 66 +- deps/v8/src/heap/incremental-marking.h | 10 +- deps/v8/src/heap/invalidated-slots-inl.h | 2 +- deps/v8/src/heap/item-parallel-job.cc | 12 +- deps/v8/src/heap/item-parallel-job.h | 4 +- deps/v8/src/heap/mark-compact-inl.h | 74 +- deps/v8/src/heap/mark-compact.cc | 4712 +++++++++-------- deps/v8/src/heap/mark-compact.h | 184 +- deps/v8/src/heap/marking.cc | 10 + deps/v8/src/heap/marking.h | 2 + deps/v8/src/heap/memory-reducer.cc | 2 +- deps/v8/src/heap/object-stats.cc | 77 +- deps/v8/src/heap/object-stats.h | 3 - deps/v8/src/heap/objects-visiting-inl.h | 39 +- deps/v8/src/heap/objects-visiting.h | 8 +- deps/v8/src/heap/remembered-set.h | 19 +- deps/v8/src/heap/scavenge-job.cc | 2 +- deps/v8/src/heap/scavenger-inl.h | 88 +- deps/v8/src/heap/scavenger.cc | 77 +- deps/v8/src/heap/scavenger.h | 16 +- deps/v8/src/heap/setup-heap-internal.cc | 250 +- deps/v8/src/heap/spaces-inl.h | 6 +- deps/v8/src/heap/spaces.cc | 115 +- deps/v8/src/heap/spaces.h | 75 +- deps/v8/src/heap/store-buffer.cc | 10 +- deps/v8/src/heap/sweeper.cc | 77 +- deps/v8/src/heap/sweeper.h | 20 +- deps/v8/src/ia32/assembler-ia32-inl.h | 26 +- deps/v8/src/ia32/assembler-ia32.cc | 25 +- deps/v8/src/ia32/assembler-ia32.h | 44 +- deps/v8/src/ia32/code-stubs-ia32.cc | 118 +- deps/v8/src/ia32/codegen-ia32.cc | 3 +- deps/v8/src/ia32/disasm-ia32.cc | 30 + deps/v8/src/ia32/frame-constants-ia32.h | 36 +- deps/v8/src/ia32/macro-assembler-ia32.cc | 49 +- deps/v8/src/ia32/macro-assembler-ia32.h | 18 +- deps/v8/src/ia32/sse-instr.h | 2 + deps/v8/src/ic/accessor-assembler.cc | 695 ++- deps/v8/src/ic/accessor-assembler.h | 79 +- deps/v8/src/ic/handler-configuration-inl.h | 28 +- deps/v8/src/ic/handler-configuration.cc | 74 +- deps/v8/src/ic/handler-configuration.h | 24 +- deps/v8/src/ic/ic.cc | 417 +- deps/v8/src/ic/ic.h | 61 +- deps/v8/src/ic/keyed-store-generic.cc | 325 +- .../src/inspector/injected-script-source.js | 21 +- deps/v8/src/inspector/injected-script.cc | 31 +- deps/v8/src/inspector/injected-script.h | 2 + .../inspector/inspector_protocol_config.json | 2 +- deps/v8/src/inspector/js_protocol.json | 66 +- deps/v8/src/inspector/js_protocol.pdl | 34 +- deps/v8/src/inspector/string-16.cc | 25 +- deps/v8/src/inspector/string-16.h | 2 + deps/v8/src/inspector/v8-console-message.cc | 10 + deps/v8/src/inspector/v8-console.cc | 41 +- .../src/inspector/v8-debugger-agent-impl.cc | 95 +- .../v8/src/inspector/v8-debugger-agent-impl.h | 13 +- deps/v8/src/inspector/v8-debugger-script.cc | 82 +- deps/v8/src/inspector/v8-debugger-script.h | 21 +- deps/v8/src/inspector/v8-debugger.cc | 66 +- deps/v8/src/inspector/v8-debugger.h | 11 +- .../src/inspector/v8-injected-script-host.cc | 3 +- deps/v8/src/inspector/v8-inspector-impl.cc | 21 +- deps/v8/src/inspector/v8-inspector-impl.h | 2 + .../inspector/v8-inspector-session-impl.cc | 5 +- .../src/inspector/v8-profiler-agent-impl.cc | 13 - .../v8/src/inspector/v8-profiler-agent-impl.h | 4 - .../v8/src/inspector/v8-runtime-agent-impl.cc | 42 +- deps/v8/src/inspector/v8-runtime-agent-impl.h | 8 +- deps/v8/src/inspector/wasm-translation.cc | 213 +- deps/v8/src/inspector/wasm-translation.h | 7 + deps/v8/src/instruction-stream.cc | 95 +- deps/v8/src/instruction-stream.h | 35 +- deps/v8/src/interface-descriptors.h | 5 +- .../src/interpreter/bytecode-array-builder.cc | 11 + .../src/interpreter/bytecode-array-builder.h | 6 + deps/v8/src/interpreter/bytecode-generator.cc | 279 +- deps/v8/src/interpreter/bytecode-generator.h | 19 +- deps/v8/src/interpreter/bytecodes.h | 3 + .../src/interpreter/constant-array-builder.h | 16 +- .../src/interpreter/handler-table-builder.cc | 2 +- .../src/interpreter/interpreter-assembler.cc | 164 +- .../src/interpreter/interpreter-assembler.h | 64 +- .../src/interpreter/interpreter-generator.cc | 93 +- .../interpreter-intrinsics-generator.cc | 22 +- deps/v8/src/interpreter/interpreter.cc | 43 +- deps/v8/src/interpreter/interpreter.h | 5 +- .../interpreter/setup-interpreter-internal.cc | 2 +- deps/v8/src/intl.cc | 55 +- deps/v8/src/intl.h | 27 +- deps/v8/src/isolate-inl.h | 25 +- deps/v8/src/isolate.cc | 389 +- deps/v8/src/isolate.h | 73 +- deps/v8/src/js/array.js | 50 +- deps/v8/src/js/intl.js | 89 +- deps/v8/src/js/messages.js | 70 - deps/v8/src/js/prologue.js | 36 - deps/v8/src/js/spread.js | 51 - deps/v8/src/js/typedarray.js | 27 - deps/v8/src/json-parser.cc | 7 +- deps/v8/src/json-parser.h | 9 +- deps/v8/src/json-stringifier.h | 13 +- deps/v8/src/keys.cc | 12 +- deps/v8/src/keys.h | 3 + deps/v8/src/layout-descriptor.h | 6 +- .../default-foreground-task-runner.cc | 23 +- .../default-foreground-task-runner.h | 12 +- deps/v8/src/libplatform/default-platform.cc | 32 +- deps/v8/src/libplatform/default-platform.h | 11 +- ... => default-worker-threads-task-runner.cc} | 25 +- ...h => default-worker-threads-task-runner.h} | 12 +- .../src/libplatform/tracing/trace-writer.cc | 13 +- .../v8/src/libplatform/tracing/trace-writer.h | 1 - deps/v8/src/log-utils.h | 4 +- deps/v8/src/log.cc | 230 +- deps/v8/src/log.h | 19 +- deps/v8/src/lookup.cc | 134 +- deps/v8/src/lookup.h | 19 +- deps/v8/src/macro-assembler.h | 1 + deps/v8/src/managed.h | 2 +- deps/v8/src/messages.cc | 33 +- deps/v8/src/messages.h | 16 +- deps/v8/src/mips/assembler-mips-inl.h | 22 +- deps/v8/src/mips/assembler-mips.cc | 14 +- deps/v8/src/mips/assembler-mips.h | 9 +- deps/v8/src/mips/code-stubs-mips.cc | 70 +- deps/v8/src/mips/codegen-mips.cc | 1 + deps/v8/src/mips/frame-constants-mips.h | 28 +- deps/v8/src/mips/macro-assembler-mips.cc | 1172 ++-- deps/v8/src/mips/macro-assembler-mips.h | 179 +- deps/v8/src/mips/simulator-mips.cc | 4 +- deps/v8/src/mips64/assembler-mips64-inl.h | 26 +- deps/v8/src/mips64/assembler-mips64.cc | 14 +- deps/v8/src/mips64/assembler-mips64.h | 9 +- deps/v8/src/mips64/code-stubs-mips64.cc | 70 +- deps/v8/src/mips64/codegen-mips64.cc | 1 + deps/v8/src/mips64/frame-constants-mips64.h | 28 +- deps/v8/src/mips64/macro-assembler-mips64.cc | 917 ++-- deps/v8/src/mips64/macro-assembler-mips64.h | 158 +- deps/v8/src/mips64/simulator-mips64.cc | 4 +- deps/v8/src/objects-body-descriptors-inl.h | 359 +- deps/v8/src/objects-body-descriptors.h | 31 +- deps/v8/src/objects-debug.cc | 276 +- deps/v8/src/objects-inl.h | 123 +- deps/v8/src/objects-printer.cc | 284 +- deps/v8/src/objects.cc | 922 ++-- deps/v8/src/objects.h | 589 ++- deps/v8/src/objects/bigint.cc | 145 +- deps/v8/src/objects/bigint.h | 23 +- deps/v8/src/objects/code-inl.h | 125 +- deps/v8/src/objects/code.h | 98 +- deps/v8/src/objects/debug-objects-inl.h | 2 +- deps/v8/src/objects/debug-objects.cc | 20 +- deps/v8/src/objects/debug-objects.h | 31 +- deps/v8/src/objects/descriptor-array.h | 8 +- deps/v8/src/objects/dictionary.h | 41 +- deps/v8/src/objects/fixed-array-inl.h | 39 +- deps/v8/src/objects/fixed-array.h | 86 +- deps/v8/src/objects/frame-array.h | 2 +- deps/v8/src/objects/hash-table.h | 59 +- deps/v8/src/objects/intl-objects.cc | 41 +- deps/v8/src/objects/intl-objects.h | 17 +- deps/v8/src/objects/js-array-inl.h | 83 +- deps/v8/src/objects/js-array.h | 90 +- deps/v8/src/objects/js-promise.h | 7 +- .../objects/js-regexp-string-iterator-inl.h | 35 + .../src/objects/js-regexp-string-iterator.h | 59 + deps/v8/src/objects/literal-objects.cc | 2 +- deps/v8/src/objects/literal-objects.h | 1 + deps/v8/src/objects/map-inl.h | 12 +- deps/v8/src/objects/map.h | 83 +- deps/v8/src/objects/maybe-object-inl.h | 92 + deps/v8/src/objects/maybe-object.h | 108 + deps/v8/src/objects/module.cc | 23 + deps/v8/src/objects/module.h | 29 +- deps/v8/src/objects/name.h | 5 +- deps/v8/src/objects/object-macros-undef.h | 6 + deps/v8/src/objects/object-macros.h | 48 + deps/v8/src/objects/scope-info.cc | 370 +- deps/v8/src/objects/scope-info.h | 130 +- deps/v8/src/objects/script-inl.h | 3 +- deps/v8/src/objects/script.h | 4 +- .../v8/src/objects/shared-function-info-inl.h | 399 +- deps/v8/src/objects/shared-function-info.h | 237 +- deps/v8/src/objects/string-inl.h | 2 +- deps/v8/src/objects/string-table.h | 11 +- deps/v8/src/objects/string.h | 10 +- deps/v8/src/objects/template-objects.cc | 2 +- ...-info.cc => optimized-compilation-info.cc} | 125 +- ...on-info.h => optimized-compilation-info.h} | 173 +- deps/v8/src/parsing/parse-info.cc | 34 +- deps/v8/src/parsing/parse-info.h | 12 +- deps/v8/src/parsing/parser-base.h | 6 + deps/v8/src/parsing/parser.cc | 143 +- deps/v8/src/parsing/parser.h | 11 +- deps/v8/src/parsing/parsing.cc | 2 +- deps/v8/src/parsing/pattern-rewriter.cc | 58 +- deps/v8/src/parsing/scanner.cc | 182 +- deps/v8/src/parsing/scanner.h | 27 +- deps/v8/src/perf-jit.cc | 50 +- deps/v8/src/perf-jit.h | 11 +- deps/v8/src/ppc/assembler-ppc-inl.h | 23 +- deps/v8/src/ppc/assembler-ppc.cc | 38 +- deps/v8/src/ppc/assembler-ppc.h | 9 +- deps/v8/src/ppc/code-stubs-ppc.cc | 49 +- deps/v8/src/ppc/codegen-ppc.cc | 1 + deps/v8/src/ppc/constants-ppc.h | 4 + deps/v8/src/ppc/frame-constants-ppc.h | 24 +- deps/v8/src/ppc/macro-assembler-ppc.cc | 127 +- deps/v8/src/ppc/macro-assembler-ppc.h | 34 +- deps/v8/src/profiler/allocation-tracker.cc | 2 +- deps/v8/src/profiler/heap-profiler.cc | 10 +- deps/v8/src/profiler/heap-profiler.h | 7 +- .../src/profiler/heap-snapshot-generator.cc | 214 +- .../v8/src/profiler/heap-snapshot-generator.h | 10 +- deps/v8/src/profiler/profile-generator.cc | 2 +- deps/v8/src/profiler/profiler-listener.cc | 28 +- deps/v8/src/profiler/profiler-listener.h | 6 +- .../v8/src/profiler/sampling-heap-profiler.cc | 2 +- deps/v8/src/property-descriptor.cc | 2 +- deps/v8/src/prototype.h | 4 +- .../regexp/arm/regexp-macro-assembler-arm.cc | 6 +- .../arm64/regexp-macro-assembler-arm64.cc | 4 +- .../ia32/regexp-macro-assembler-ia32.cc | 6 +- deps/v8/src/regexp/jsregexp.cc | 4 +- deps/v8/src/regexp/jsregexp.h | 10 +- .../mips/regexp-macro-assembler-mips.cc | 4 +- .../mips64/regexp-macro-assembler-mips64.cc | 4 +- .../regexp/ppc/regexp-macro-assembler-ppc.cc | 6 +- deps/v8/src/regexp/regexp-macro-assembler.cc | 4 +- deps/v8/src/regexp/regexp-parser.cc | 2 +- deps/v8/src/regexp/regexp-utils.cc | 2 +- deps/v8/src/regexp/regexp-utils.h | 8 +- .../s390/regexp-macro-assembler-s390.cc | 6 +- .../regexp/x64/regexp-macro-assembler-x64.cc | 6 +- deps/v8/src/register-configuration.cc | 20 +- deps/v8/src/runtime-profiler.cc | 16 +- deps/v8/src/runtime/runtime-array.cc | 22 +- deps/v8/src/runtime/runtime-atomics.cc | 2 +- deps/v8/src/runtime/runtime-classes.cc | 10 +- deps/v8/src/runtime/runtime-collections.cc | 2 +- deps/v8/src/runtime/runtime-compiler.cc | 15 +- deps/v8/src/runtime/runtime-date.cc | 2 +- deps/v8/src/runtime/runtime-debug.cc | 50 +- deps/v8/src/runtime/runtime-forin.cc | 14 +- deps/v8/src/runtime/runtime-function.cc | 27 +- deps/v8/src/runtime/runtime-generator.cc | 6 +- deps/v8/src/runtime/runtime-internal.cc | 31 +- deps/v8/src/runtime/runtime-intl.cc | 23 +- deps/v8/src/runtime/runtime-literals.cc | 5 +- deps/v8/src/runtime/runtime-liveedit.cc | 6 +- deps/v8/src/runtime/runtime-object.cc | 32 +- deps/v8/src/runtime/runtime-promise.cc | 1 + deps/v8/src/runtime/runtime-proxy.cc | 2 +- deps/v8/src/runtime/runtime-regexp.cc | 19 +- deps/v8/src/runtime/runtime-scopes.cc | 13 - deps/v8/src/runtime/runtime-test.cc | 59 +- deps/v8/src/runtime/runtime-typedarray.cc | 2 +- deps/v8/src/runtime/runtime-wasm.cc | 39 +- deps/v8/src/runtime/runtime.cc | 33 + deps/v8/src/runtime/runtime.h | 571 +- deps/v8/src/s390/assembler-s390-inl.h | 24 +- deps/v8/src/s390/assembler-s390.cc | 3 +- deps/v8/src/s390/assembler-s390.h | 8 +- deps/v8/src/s390/code-stubs-s390.cc | 45 +- deps/v8/src/s390/codegen-s390.cc | 1 + deps/v8/src/s390/frame-constants-s390.h | 24 +- deps/v8/src/s390/macro-assembler-s390.cc | 51 +- deps/v8/src/s390/macro-assembler-s390.h | 23 +- deps/v8/src/simulator-base.h | 1 + .../snapshot/builtin-deserializer-allocator.h | 16 + deps/v8/src/snapshot/builtin-deserializer.cc | 30 +- .../snapshot/builtin-serializer-allocator.cc | 6 +- deps/v8/src/snapshot/code-serializer.cc | 153 +- deps/v8/src/snapshot/code-serializer.h | 29 +- .../default-deserializer-allocator.cc | 15 +- .../snapshot/default-deserializer-allocator.h | 15 + .../snapshot/default-serializer-allocator.cc | 14 +- deps/v8/src/snapshot/deserializer.cc | 232 +- deps/v8/src/snapshot/deserializer.h | 23 +- deps/v8/src/snapshot/embedded-empty.cc | 24 + deps/v8/src/snapshot/macros.h | 78 + deps/v8/src/snapshot/mksnapshot.cc | 275 +- deps/v8/src/snapshot/object-deserializer.cc | 11 +- deps/v8/src/snapshot/partial-deserializer.cc | 2 +- deps/v8/src/snapshot/partial-serializer.cc | 12 +- deps/v8/src/snapshot/serializer-common.cc | 9 +- deps/v8/src/snapshot/serializer-common.h | 108 +- deps/v8/src/snapshot/serializer.cc | 77 +- deps/v8/src/snapshot/serializer.h | 20 +- deps/v8/src/snapshot/snapshot-common.cc | 156 + deps/v8/src/snapshot/snapshot.h | 58 + deps/v8/src/snapshot/startup-deserializer.cc | 2 +- deps/v8/src/snapshot/startup-serializer.cc | 17 +- deps/v8/src/snapshot/startup-serializer.h | 6 +- deps/v8/src/source-position-table.cc | 31 +- deps/v8/src/source-position-table.h | 8 +- deps/v8/src/source-position.cc | 4 +- deps/v8/src/source-position.h | 7 +- deps/v8/src/startup-data-util.cc | 9 +- deps/v8/src/string-builder.h | 2 +- deps/v8/src/string-stream.cc | 4 +- deps/v8/src/third_party/vtune/BUILD.gn | 2 +- deps/v8/src/transitions-inl.h | 57 +- deps/v8/src/transitions.cc | 195 +- deps/v8/src/transitions.h | 100 +- deps/v8/src/trap-handler/handler-outside.cc | 47 +- deps/v8/src/trap-handler/trap-handler.h | 25 +- deps/v8/src/unoptimized-compilation-info.cc | 64 + deps/v8/src/unoptimized-compilation-info.h | 138 + deps/v8/src/utils.h | 45 + deps/v8/src/v8.h | 7 +- deps/v8/src/v8memory.h | 4 + deps/v8/src/value-serializer.cc | 62 +- deps/v8/src/value-serializer.h | 99 +- deps/v8/src/visitors.h | 9 + deps/v8/src/wasm/OWNERS | 5 +- .../wasm/baseline/arm/liftoff-assembler-arm.h | 120 +- .../baseline/arm64/liftoff-assembler-arm64.h | 123 +- .../baseline/ia32/liftoff-assembler-ia32.h | 639 ++- .../v8/src/wasm/baseline/liftoff-assembler.cc | 76 +- deps/v8/src/wasm/baseline/liftoff-assembler.h | 195 +- deps/v8/src/wasm/baseline/liftoff-compiler.cc | 740 ++- deps/v8/src/wasm/baseline/liftoff-register.h | 19 +- deps/v8/src/wasm/baseline/mips/OWNERS | 3 + .../baseline/mips/liftoff-assembler-mips.h | 566 +- deps/v8/src/wasm/baseline/mips64/OWNERS | 3 + .../mips64/liftoff-assembler-mips64.h | 421 +- .../wasm/baseline/ppc/liftoff-assembler-ppc.h | 125 +- .../baseline/s390/liftoff-assembler-s390.h | 125 +- .../wasm/baseline/x64/liftoff-assembler-x64.h | 566 +- deps/v8/src/wasm/compilation-manager.cc | 19 +- deps/v8/src/wasm/compilation-manager.h | 9 +- deps/v8/src/wasm/decoder.h | 3 + deps/v8/src/wasm/function-body-decoder-impl.h | 141 +- deps/v8/src/wasm/function-body-decoder.cc | 93 +- deps/v8/src/wasm/module-compiler.cc | 3367 +++++------- deps/v8/src/wasm/module-compiler.h | 69 +- deps/v8/src/wasm/module-decoder.cc | 213 +- deps/v8/src/wasm/module-decoder.h | 16 + deps/v8/src/wasm/wasm-code-manager.cc | 650 ++- deps/v8/src/wasm/wasm-code-manager.h | 185 +- deps/v8/src/wasm/wasm-code-specialization.cc | 238 +- deps/v8/src/wasm/wasm-code-specialization.h | 34 +- deps/v8/src/wasm/wasm-code-wrapper.cc | 76 - deps/v8/src/wasm/wasm-code-wrapper.h | 50 - deps/v8/src/wasm/wasm-constants.h | 3 +- deps/v8/src/wasm/wasm-debug.cc | 147 +- deps/v8/src/wasm/wasm-engine.cc | 18 + deps/v8/src/wasm/wasm-engine.h | 16 +- deps/v8/src/wasm/wasm-interpreter.cc | 490 +- deps/v8/src/wasm/wasm-interpreter.h | 17 +- deps/v8/src/wasm/wasm-js.cc | 272 +- deps/v8/src/wasm/wasm-memory.cc | 274 +- deps/v8/src/wasm/wasm-memory.h | 101 +- deps/v8/src/wasm/wasm-module.cc | 174 +- deps/v8/src/wasm/wasm-module.h | 51 +- deps/v8/src/wasm/wasm-objects-inl.h | 230 +- deps/v8/src/wasm/wasm-objects.cc | 1099 ++-- deps/v8/src/wasm/wasm-objects.h | 632 ++- deps/v8/src/wasm/wasm-opcodes.cc | 40 +- deps/v8/src/wasm/wasm-opcodes.h | 254 +- deps/v8/src/wasm/wasm-result.cc | 2 +- deps/v8/src/wasm/wasm-result.h | 2 +- deps/v8/src/wasm/wasm-serialization.cc | 197 +- deps/v8/src/wasm/wasm-text.cc | 2 +- deps/v8/src/x64/assembler-x64-inl.h | 26 +- deps/v8/src/x64/assembler-x64.cc | 4 +- deps/v8/src/x64/assembler-x64.h | 77 +- deps/v8/src/x64/code-stubs-x64.cc | 114 +- deps/v8/src/x64/codegen-x64.cc | 1 + deps/v8/src/x64/disasm-x64.cc | 12 +- deps/v8/src/x64/frame-constants-x64.h | 36 +- deps/v8/src/x64/macro-assembler-x64.cc | 111 +- deps/v8/src/x64/macro-assembler-x64.h | 32 +- deps/v8/src/zone/zone.cc | 6 +- deps/v8/test/BUILD.gn | 262 +- deps/v8/test/benchmarks/BUILD.gn | 16 + deps/v8/test/benchmarks/benchmarks.isolate | 14 - deps/v8/test/bot_default.isolate | 24 - deps/v8/test/cctest/BUILD.gn | 22 +- deps/v8/test/cctest/cctest.cc | 5 +- deps/v8/test/cctest/cctest.h | 18 +- deps/v8/test/cctest/cctest.isolate | 16 - deps/v8/test/cctest/cctest.status | 83 +- deps/v8/test/cctest/cctest_exe.isolate | 13 - .../cctest/compiler/code-assembler-tester.h | 20 +- deps/v8/test/cctest/compiler/codegen-tester.h | 5 +- .../test/cctest/compiler/function-tester.cc | 18 +- .../cctest/compiler/graph-builder-tester.h | 5 +- .../cctest/compiler/test-code-generator.cc | 286 +- .../compiler/test-instruction-scheduler.cc | 115 + .../test/cctest/compiler/test-instruction.cc | 2 +- .../cctest/compiler/test-js-constant-cache.cc | 31 +- .../test-js-context-specialization.cc | 14 +- .../cctest/compiler/test-js-typed-lowering.cc | 14 +- deps/v8/test/cctest/compiler/test-linkage.cc | 16 +- .../cctest/compiler/test-multiple-return.cc | 173 +- .../test-run-bytecode-graph-builder.cc | 9 +- .../cctest/compiler/test-run-intrinsics.cc | 5 +- .../cctest/compiler/test-run-jsobjects.cc | 2 +- .../test/cctest/compiler/test-run-machops.cc | 23 - .../cctest/compiler/test-run-native-calls.cc | 3 +- .../v8/test/cctest/compiler/test-run-stubs.cc | 4 +- .../cctest/compiler/test-run-wasm-machops.cc | 199 - deps/v8/test/cctest/compiler/value-helper.h | 10 +- deps/v8/test/cctest/heap/heap-tester.h | 9 + deps/v8/test/cctest/heap/heap-utils.cc | 2 +- deps/v8/test/cctest/heap/test-alloc.cc | 83 +- deps/v8/test/cctest/heap/test-compaction.cc | 2 +- deps/v8/test/cctest/heap/test-heap.cc | 336 +- .../cctest/heap/test-incremental-marking.cc | 9 + .../cctest/heap/test-invalidated-slots.cc | 4 +- deps/v8/test/cctest/heap/test-mark-compact.cc | 40 +- .../test/cctest/heap/test-page-promotion.cc | 2 +- deps/v8/test/cctest/heap/test-spaces.cc | 10 +- .../test/cctest/heap/test-weak-references.cc | 430 ++ .../bytecode-expectations-printer.cc | 9 +- .../ArrayLiterals.golden | 40 +- .../AsyncGenerators.golden | 2 +- .../CallAndSpread.golden | 46 +- .../bytecode_expectations/CallRuntime.golden | 21 - .../CompoundExpressions.golden | 4 +- .../CountOperators.golden | 8 +- .../DeclareGlobals.golden | 10 +- .../bytecode_expectations/Delete.golden | 8 +- .../bytecode_expectations/ForAwaitOf.golden | 10 +- .../bytecode_expectations/ForIn.golden | 2 +- .../bytecode_expectations/ForOf.golden | 10 +- .../bytecode_expectations/ForOfLoop.golden | 18 +- .../GenerateTestUndetectable.golden | 16 +- .../bytecode_expectations/Generators.golden | 2 +- .../bytecode_expectations/NewAndSpread.golden | 44 +- .../ObjectLiterals.golden | 46 +- .../StandardForLoop.golden | 4 +- .../SuperCallAndSpread.golden | 43 +- .../TemplateLiterals.golden | 222 + .../TopLevelObjectLiterals.golden | 6 +- .../WithStatement.golden | 2 +- .../cctest/interpreter/interpreter-tester.h | 4 +- .../interpreter/test-bytecode-generator.cc | 38 +- .../cctest/interpreter/test-interpreter.cc | 23 + .../interpreter/test-source-positions.cc | 2 +- .../test/cctest/libplatform/test-tracing.cc | 83 +- .../cctest/parsing/test-parse-decision.cc | 2 +- .../cctest/parsing/test-scanner-streams.cc | 3 +- deps/v8/test/cctest/test-api-accessors.cc | 94 + deps/v8/test/cctest/test-api-interceptors.cc | 54 + deps/v8/test/cctest/test-api.cc | 307 +- deps/v8/test/cctest/test-array-list.cc | 2 +- deps/v8/test/cctest/test-assembler-arm.cc | 2 +- deps/v8/test/cctest/test-assembler-arm64.cc | 12 +- deps/v8/test/cctest/test-assembler-ia32.cc | 35 +- deps/v8/test/cctest/test-assembler-mips.cc | 69 +- deps/v8/test/cctest/test-assembler-mips64.cc | 69 +- deps/v8/test/cctest/test-assembler-ppc.cc | 2 +- deps/v8/test/cctest/test-assembler-s390.cc | 2 +- deps/v8/test/cctest/test-assembler-x64.cc | 197 +- deps/v8/test/cctest/test-code-layout.cc | 12 +- .../test/cctest/test-code-stub-assembler.cc | 177 +- deps/v8/test/cctest/test-code-stubs-arm.cc | 4 +- deps/v8/test/cctest/test-code-stubs-arm64.cc | 5 +- deps/v8/test/cctest/test-code-stubs-ia32.cc | 4 +- deps/v8/test/cctest/test-code-stubs-mips.cc | 4 +- deps/v8/test/cctest/test-code-stubs-mips64.cc | 4 +- deps/v8/test/cctest/test-code-stubs-x64.cc | 4 +- deps/v8/test/cctest/test-code-stubs.cc | 2 +- deps/v8/test/cctest/test-compiler.cc | 54 +- deps/v8/test/cctest/test-conversions.cc | 2 +- deps/v8/test/cctest/test-cpu-profiler.cc | 18 +- deps/v8/test/cctest/test-date.cc | 8 +- deps/v8/test/cctest/test-debug.cc | 689 ++- deps/v8/test/cctest/test-dictionary.cc | 2 +- deps/v8/test/cctest/test-disasm-ia32.cc | 26 +- deps/v8/test/cctest/test-disasm-x64.cc | 16 +- deps/v8/test/cctest/test-elements-kind.cc | 2 +- deps/v8/test/cctest/test-feedback-vector.cc | 7 +- deps/v8/test/cctest/test-feedback-vector.h | 10 +- .../test/cctest/test-field-type-tracking.cc | 22 +- deps/v8/test/cctest/test-global-handles.cc | 3 +- deps/v8/test/cctest/test-heap-profiler.cc | 447 +- deps/v8/test/cctest/test-identity-map.cc | 2 +- .../test-isolate-independent-builtins.cc | 250 +- deps/v8/test/cctest/test-log.cc | 31 +- .../test/cctest/test-macro-assembler-mips.cc | 521 +- .../cctest/test-macro-assembler-mips64.cc | 413 +- .../test/cctest/test-macro-assembler-x64.cc | 29 +- deps/v8/test/cctest/test-managed.cc | 17 + deps/v8/test/cctest/test-mementos.cc | 2 +- deps/v8/test/cctest/test-object.cc | 4 +- deps/v8/test/cctest/test-parsing.cc | 76 + .../cctest/test-run-wasm-relocation-arm.cc | 79 - .../cctest/test-run-wasm-relocation-arm64.cc | 84 - .../cctest/test-run-wasm-relocation-ia32.cc | 90 - .../cctest/test-run-wasm-relocation-x64.cc | 86 - deps/v8/test/cctest/test-serialize.cc | 207 +- deps/v8/test/cctest/test-strings.cc | 7 +- deps/v8/test/cctest/test-symbols.cc | 2 +- .../test/cctest/test-sync-primitives-arm.cc | 2 +- .../test/cctest/test-sync-primitives-arm64.cc | 2 +- .../v8/test/cctest/test-thread-termination.cc | 62 +- deps/v8/test/cctest/test-transitions.cc | 4 +- deps/v8/test/cctest/test-transitions.h | 2 +- deps/v8/test/cctest/test-typedarrays.cc | 6 +- deps/v8/test/cctest/test-types.cc | 16 +- deps/v8/test/cctest/test-unboxed-doubles.cc | 2 +- deps/v8/test/cctest/test-weakmaps.cc | 2 +- deps/v8/test/cctest/test-weaksets.cc | 2 +- deps/v8/test/cctest/types-fuzz.h | 2 +- deps/v8/test/cctest/wasm/test-c-wasm-entry.cc | 16 +- deps/v8/test/cctest/wasm/test-run-wasm-64.cc | 164 +- .../test/cctest/wasm/test-run-wasm-atomics.cc | 47 +- .../cctest/wasm/test-run-wasm-atomics64.cc | 405 ++ deps/v8/test/cctest/wasm/test-run-wasm-js.cc | 51 +- .../test/cctest/wasm/test-run-wasm-module.cc | 92 +- .../cctest/wasm/test-run-wasm-relocation.cc | 68 - .../v8/test/cctest/wasm/test-run-wasm-simd.cc | 84 +- deps/v8/test/cctest/wasm/test-run-wasm.cc | 200 +- .../cctest/wasm/test-streaming-compilation.cc | 7 +- deps/v8/test/cctest/wasm/test-wasm-stack.cc | 19 +- .../cctest/wasm/test-wasm-trap-position.cc | 4 +- deps/v8/test/cctest/wasm/wasm-atomics-utils.h | 62 + deps/v8/test/cctest/wasm/wasm-run-utils.cc | 252 +- deps/v8/test/cctest/wasm/wasm-run-utils.h | 132 +- deps/v8/test/common/wasm/test-signatures.h | 16 + deps/v8/test/common/wasm/wasm-macro-gen.h | 3 + .../v8/test/common/wasm/wasm-module-runner.cc | 2 - deps/v8/test/d8_default.isolate | 18 - deps/v8/test/debugger/BUILD.gn | 16 + .../v8/test/debugger/debug/debug-backtrace.js | 8 +- deps/v8/test/debugger/debug/debug-bigint.js | 24 + .../debugger/debug/debug-clearbreakpoint.js | 8 +- .../debugger/debug/debug-compile-event.js | 6 +- .../debug/debug-evaluate-bool-constructor.js | 6 +- .../debug-evaluate-locals-optimized-double.js | 6 +- .../debug/debug-evaluate-locals-optimized.js | 6 +- .../debugger/debug/debug-evaluate-locals.js | 8 +- .../debugger/debug/debug-evaluate-with.js | 10 +- deps/v8/test/debugger/debug/debug-evaluate.js | 8 +- .../test/debugger/debug/debug-return-value.js | 20 +- .../test/debugger/debug/debug-sourceinfo.js | 64 +- .../reject-in-constructor-opt.js | 61 + .../debugger/debug/es8/async-debug-basic.js | 9 +- .../debugger/debug/regress/regress-1081309.js | 8 +- .../debugger/debug/regress/regress-1170187.js | 8 +- .../debugger/debug/regress/regress-119609.js | 6 +- .../debugger/debug/regress/regress-131994.js | 6 +- .../debugger/debug/regress/regress-1639.js | 6 +- .../debugger/debug/regress/regress-419663.js | 2 +- ...ebug-evaluate-no-side-effect-builtins-2.js | 14 + .../debug-evaluate-no-side-effect-builtins.js | 15 +- .../debug-evaluate-no-side-effect-ops.js | 2 +- ...g-evaluate-no-side-effect-runtime-check.js | 71 + .../debug-evaluate-no-side-effect.js | 9 +- deps/v8/test/debugger/debugger.isolate | 15 - deps/v8/test/debugger/debugger.status | 3 + .../test/debugger/regress/regress-1639-2.js | 6 +- deps/v8/test/debugger/test-api.js | 12 +- deps/v8/test/default.isolate | 23 - deps/v8/test/fuzzer/BUILD.gn | 33 + deps/v8/test/fuzzer/fuzzer-support.cc | 2 - deps/v8/test/fuzzer/fuzzer.isolate | 48 - deps/v8/test/fuzzer/multi-return.cc | 152 +- deps/v8/test/fuzzer/regexp-builtins.cc | 3 +- deps/v8/test/fuzzer/regexp.cc | 3 +- deps/v8/test/fuzzer/wasm-async.cc | 4 +- deps/v8/test/fuzzer/wasm-fuzzer-common.cc | 13 +- deps/v8/test/fuzzer/wasm.cc | 4 +- deps/v8/test/inspector/BUILD.gn | 20 + .../breakpoints-and-side-effects-expected.txt | 26 + .../debugger/breakpoints-and-side-effects.js | 58 + .../es6-module-script-parsed-expected.txt | 6 +- .../eval-without-codegen-expected.txt | 20 + .../debugger/eval-without-codegen.js | 10 + ...ssible-breakpoints-lazy-error-expected.txt | 2 +- ...t-preview-internal-properties-expected.txt | 7 + .../object-preview-internal-properties.js | 3 + .../script-on-after-compile-expected.txt | 78 +- ...t-parsed-for-runtime-evaluate-expected.txt | 24 +- .../debugger/script-parsed-hash-expected.txt | 6 +- deps/v8/test/inspector/inspector.isolate | 27 - deps/v8/test/inspector/protocol-test.js | 2 + .../call-function-on-async-expected.txt | 11 + .../runtime/call-function-on-async.js | 15 + .../runtime/command-line-api-expected.txt | 33 +- .../inspector/runtime/command-line-api.js | 57 + .../inspector/runtime/es6-module-expected.txt | 8 +- .../evaluate-unserializable-expected.txt | 56 + .../runtime/evaluate-unserializable.js | 24 + ...valuate-with-generate-preview-expected.txt | 20 + .../runtime/evaluate-with-generate-preview.js | 11 + ...evaluate-without-side-effects-expected.txt | 73 + .../runtime/evaluate-without-side-effects.js | 53 + .../runtime/get-heap-usage-expected.txt | 1 + .../test/inspector/runtime/get-heap-usage.js | 15 + .../runtime/get-isolate-id-expected.txt | 1 + .../test/inspector/runtime/get-isolate-id.js | 12 + .../runtime/internal-properties-expected.txt | 16 + .../inspector/runtime/internal-properties.js | 3 + .../runtime/query-objects-expected.txt | 9 + .../test/inspector/runtime/query-objects.js | 39 +- .../runtime/terminate-execution-expected.txt | 66 + .../inspector/runtime/terminate-execution.js | 60 + deps/v8/test/intl/BUILD.gn | 16 + deps/v8/test/intl/assert.js | 41 - .../intl/break-iterator/default-locale.js | 4 +- .../wellformed-unsupported-locale.js | 2 +- deps/v8/test/intl/collator/default-locale.js | 11 +- .../collator/wellformed-unsupported-locale.js | 2 +- .../test/intl/date-format/default-locale.js | 4 +- .../date-format/format-with-extensions.js | 61 + .../wellformed-unsupported-locale.js | 2 +- deps/v8/test/intl/intl.isolate | 14 - .../test/intl/number-format/default-locale.js | 4 +- .../wellformed-unsupported-locale.js | 2 +- deps/v8/test/js-perf-test/ArraySort/run.js | 30 + deps/v8/test/js-perf-test/ArraySort/sort.js | 98 + deps/v8/test/js-perf-test/JSTests.json | 195 +- .../js-perf-test/ObjectLiteralSpread/run.js | 101 + deps/v8/test/js-perf-test/SixSpeed.json | 3 - .../js-perf-test/SpreadCallsGeneral/run.js | 69 + .../js-perf-test/Strings/harmony-string.js | 64 +- deps/v8/test/js-perf-test/Strings/run.js | 4 +- .../js-perf-test/Strings/string-indexof.js | 126 - .../js-perf-test/Strings/string-matchall.js | 77 + .../Strings/string-stringat-comp.js | 50 + .../js-perf-test/Strings/string-stringat.js | 129 + .../js-perf-test/Strings/string-substring.js | 206 + .../TypedArrays/sort-cmpfn-float.js | 9 + .../TypedArrays/sort-cmpfn-int.js | 9 + .../js-perf-test/TypedArrays/sort-float.js | 8 + .../test/js-perf-test/TypedArrays/sort-int.js | 8 + deps/v8/test/js-perf-test/TypedArrays/sort.js | 73 +- deps/v8/test/message/BUILD.gn | 16 + deps/v8/test/message/fail/call-expression.js | 9 + deps/v8/test/message/fail/call-expression.out | 5 + .../test/message/fail/map-arg-non-iterable.js | 5 + .../message/fail/map-arg-non-iterable.out | 6 + .../message/fail/octal-template-literal.js | 7 + .../message/fail/octal-template-literal.out | 4 + deps/v8/test/message/message.isolate | 14 - .../test/message/wasm-finish-compilation.js | 22 + .../test/message/wasm-finish-compilation.out | 1 + .../test/message/wasm-function-name-async.js | 20 + .../test/message/wasm-function-name-async.out | 4 + .../message/wasm-function-name-streaming.js | 7 + .../message/wasm-function-name-streaming.out | 4 + .../wasm-module-and-function-name-async.js | 21 + .../wasm-module-and-function-name-async.out | 4 + ...wasm-module-and-function-name-streaming.js | 7 + ...asm-module-and-function-name-streaming.out | 4 + .../v8/test/message/wasm-module-name-async.js | 23 + .../test/message/wasm-module-name-async.out | 4 + .../message/wasm-module-name-streaming.js | 7 + .../message/wasm-module-name-streaming.out | 4 + deps/v8/test/message/wasm-no-name-async.js | 22 + deps/v8/test/message/wasm-no-name-async.out | 4 + .../v8/test/message/wasm-no-name-streaming.js | 7 + .../test/message/wasm-no-name-streaming.out | 4 + deps/v8/test/mjsunit/BUILD.gn | 30 + .../v8/test/mjsunit/array-literal-feedback.js | 2 +- deps/v8/test/mjsunit/array-reduce.js | 10 + deps/v8/test/mjsunit/code-coverage-block.js | 19 + .../compiler/array-multiple-receiver-maps.js | 15 +- .../mjsunit/compiler/number-isfinite-inl.js | 54 + .../test/mjsunit/compiler/number-isfinite.js | 33 + .../mjsunit/compiler/number-isinteger-inl.js | 54 + .../test/mjsunit/compiler/number-isinteger.js | 32 + .../mjsunit/compiler/promise-constructor.js | 35 +- .../mjsunit/compiler/string-comparison-opt.js | 247 + .../mjsunit/compiler/string-concat-deopt.js | 102 + .../compiler/typed-array-constructor.js | 129 + deps/v8/test/mjsunit/constant-folding-2.js | 24 +- .../es6/array-species-constructor-accessor.js | 2 +- .../es6/array-species-constructor-delete.js | 2 +- .../mjsunit/es6/array-species-constructor.js | 2 +- .../test/mjsunit/es6/array-species-delete.js | 2 +- .../mjsunit/es6/array-species-modified.js | 2 +- .../es6/array-species-parent-constructor.js | 2 +- .../test/mjsunit/es6/array-species-proto.js | 2 +- .../mjsunit/es6/promise-all-overflow-1.js | 19 + .../mjsunit/es6/promise-all-overflow-2.js | 16 + deps/v8/test/mjsunit/es6/promise-all.js | 84 + deps/v8/test/mjsunit/es6/promises.js | 9 + .../es6/regress/regress-crbug-820596.js | 8 + .../es6/regress/regress-crbug-837939.js | 17 + deps/v8/test/mjsunit/es6/spread-array-misc.js | 273 + .../test/mjsunit/es6/string-fromcodepoint.js | 46 +- deps/v8/test/mjsunit/harmony/array-flatMap.js | 120 + deps/v8/test/mjsunit/harmony/array-flatten.js | 38 + deps/v8/test/mjsunit/harmony/bigint/exp.js | 9 + .../mjsunit/harmony/bigint/regressions.js | 21 + .../test/mjsunit/harmony/bigint/tonumber.js | 15 +- .../test/mjsunit/harmony/numeric-separator.js | 116 + .../v8/test/mjsunit/harmony/private-fields.js | 41 +- .../mjsunit/harmony/regexp-named-captures.js | 22 +- .../test/mjsunit/harmony/string-matchAll.js | 100 + deps/v8/test/mjsunit/keyed-store-generic.js | 4 +- deps/v8/test/mjsunit/mjsunit.isolate | 28 - deps/v8/test/mjsunit/mjsunit.status | 35 +- .../modules-namespace-getownproperty1.js | 148 + .../modules-namespace-getownproperty2.js | 148 + deps/v8/test/mjsunit/regress/regress-6288.js | 2 +- deps/v8/test/mjsunit/regress/regress-7254.js | 16 + deps/v8/test/mjsunit/regress/regress-7510.js | 19 + deps/v8/test/mjsunit/regress/regress-7740.js | 18 + .../v8/test/mjsunit/regress/regress-813440.js | 17 + .../v8/test/mjsunit/regress/regress-818070.js | 35 + .../v8/test/mjsunit/regress/regress-818438.js | 55 + .../v8/test/mjsunit/regress/regress-821368.js | 14 + .../v8/test/mjsunit/regress/regress-829889.js | 17 + .../v8/test/mjsunit/regress/regress-842612.js | 16 + .../v8/test/mjsunit/regress/regress-843543.js | 17 + .../mjsunit/regress/regress-arguments-gc.js | 37 - .../mjsunit/regress/regress-crbug-813630.js | 22 + .../mjsunit/regress/regress-crbug-819086.js | 14 + .../mjsunit/regress/regress-crbug-819298.js | 17 + .../mjsunit/regress/regress-crbug-820312.js | 26 + .../mjsunit/regress/regress-crbug-820820.js | 23 + .../mjsunit/regress/regress-crbug-821159-1.js | 8 + .../mjsunit/regress/regress-crbug-821159-2.js | 8 + .../mjsunit/regress/regress-crbug-821159-3.js | 8 + .../mjsunit/regress/regress-crbug-821159-4.js | 8 + .../mjsunit/regress/regress-crbug-823069.js | 8 + .../mjsunit/regress/regress-crbug-827013.js | 19 + .../mjsunit/regress/regress-crbug-831943.js | 14 + .../mjsunit/regress/regress-crbug-843022.js | 21 + .../regress/regress-store-transition-dict.js | 84 + .../test/mjsunit/regress/wasm/regress-7508.js | 21 + .../test/mjsunit/regress/wasm/regress-7565.js | 20 + .../test/mjsunit/regress/wasm/regress-7579.js | 62 + .../test/mjsunit/regress/wasm/regress-7582.js | 48 + .../mjsunit/regress/wasm/regress-769637.js | 17 + .../mjsunit/regress/wasm/regress-808848.js | 67 + .../mjsunit/regress/wasm/regress-817380.js | 25 + .../mjsunit/regress/wasm/regress-820802.js | 21 + .../mjsunit/regress/wasm/regress-824681.js | 20 + .../mjsunit/regress/wasm/regress-825087a.js | 9 + .../mjsunit/regress/wasm/regress-825087b.js | 10 + .../mjsunit/regress/wasm/regress-827806.js | 22 + .../mjsunit/regress/wasm/regress-831463.js | 22 + .../mjsunit/regress/wasm/regress-834619.js | 49 + deps/v8/test/mjsunit/tzoffset-seoul-noi18n.js | 20 + deps/v8/test/mjsunit/tzoffset-seoul.js | 20 + .../test/mjsunit/tzoffset-transition-apia.js | 48 + .../mjsunit/tzoffset-transition-lord-howe.js | 35 + .../mjsunit/tzoffset-transition-moscow.js | 85 + .../tzoffset-transition-new-york-noi18n.js | 34 + .../mjsunit/tzoffset-transition-new-york.js | 34 + deps/v8/test/mjsunit/wasm/anyref.js | 102 + .../wasm/compiled-module-management.js | 15 + deps/v8/test/mjsunit/wasm/ffi.js | 26 +- .../v8/test/mjsunit/wasm/graceful_shutdown.js | 2 +- deps/v8/test/mjsunit/wasm/indirect-tables.js | 102 + .../test/mjsunit/wasm/liftoff-trap-handler.js | 28 + deps/v8/test/mjsunit/wasm/mutable-globals.js | 300 ++ deps/v8/test/mjsunit/wasm/table-grow.js | 42 +- deps/v8/test/mjsunit/wasm/wasm-constants.js | 7 + .../test/mjsunit/wasm/wasm-module-builder.js | 5 + deps/v8/test/mkgrokdump/BUILD.gn | 10 + deps/v8/test/mkgrokdump/mkgrokdump.cc | 54 +- deps/v8/test/mkgrokdump/mkgrokdump.isolate | 17 - deps/v8/test/mozilla/BUILD.gn | 16 + deps/v8/test/mozilla/mozilla.isolate | 14 - deps/v8/test/mozilla/mozilla.status | 22 +- deps/v8/test/optimize_for_size.isolate | 18 - deps/v8/test/perf.isolate | 27 - deps/v8/test/preparser/BUILD.gn | 16 + deps/v8/test/preparser/preparser.isolate | 14 - deps/v8/test/test262/BUILD.gn | 43 +- deps/v8/test/test262/archive.py | 38 - deps/v8/test/test262/list.py | 26 - deps/v8/test/test262/test262.isolate | 20 - deps/v8/test/test262/test262.status | 142 +- deps/v8/test/test262/testcfg.py | 28 +- deps/v8/test/unittests/BUILD.gn | 10 + .../v8/test/unittests/api/isolate-unittest.cc | 6 +- .../test/unittests/base/logging-unittest.cc | 36 + .../v8/test/unittests/base/macros-unittest.cc | 36 + .../unittests/base/platform/time-unittest.cc | 20 +- .../unittests/base/template-utils-unittest.cc | 12 +- deps/v8/test/unittests/bigint-unittest.cc | 2 +- .../unittests/code-stub-assembler-unittest.cc | 2 +- .../compiler-dispatcher-unittest.cc | 140 +- .../optimizing-compile-dispatcher-unittest.cc | 20 +- .../unoptimized-compile-job-unittest.cc | 6 +- .../compiler/code-assembler-unittest.cc | 3 +- .../compiler/common-operator-unittest.cc | 24 +- .../control-flow-optimizer-unittest.cc | 21 +- .../test/unittests/compiler/graph-unittest.cc | 2 +- .../compiler/instruction-selector-unittest.cc | 48 +- .../compiler/int64-lowering-unittest.cc | 7 +- .../compiler/js-builtin-reducer-unittest.cc | 91 - .../compiler/js-call-reducer-unittest.cc | 112 +- .../compiler/machine-operator-unittest.cc | 6 +- .../unittests/compiler/node-test-utils.cc | 90 +- .../test/unittests/compiler/node-test-utils.h | 24 +- .../test/unittests/heap/gc-tracer-unittest.cc | 36 + .../bytecode-array-builder-unittest.cc | 9 +- .../bytecode-array-writer-unittest.cc | 2 +- .../constant-array-builder-unittest.cc | 2 +- .../interpreter-assembler-unittest.cc | 171 +- .../interpreter-assembler-unittest.h | 38 +- .../libplatform/default-platform-unittest.cc | 6 +- deps/v8/test/unittests/test-helpers.cc | 15 +- deps/v8/test/unittests/unittests.isolate | 16 - deps/v8/test/unittests/unittests.status | 14 +- .../unittests/value-serializer-unittest.cc | 70 +- .../wasm/function-body-decoder-unittest.cc | 16 +- .../unittests/wasm/module-decoder-unittest.cc | 106 +- .../unittests/wasm/trap-handler-unittest.cc | 5 +- .../wasm/wasm-code-manager-unittest.cc | 14 +- deps/v8/test/wasm-spec-tests/BUILD.gn | 16 + .../v8/test/wasm-spec-tests/tests.tar.gz.sha1 | 2 +- .../wasm-spec-tests/wasm-spec-tests.isolate | 15 - deps/v8/test/webkit/BUILD.gn | 16 + deps/v8/test/webkit/webkit.isolate | 14 - deps/v8/test/webkit/webkit.status | 4 + deps/v8/testing/gmock/BUILD.gn | 37 + deps/v8/testing/gmock/OWNERS | 2 + deps/v8/testing/gmock/include/DEPS | 3 + .../gmock/include/gmock/gmock-actions.h | 10 + .../gmock/gmock-generated-function-mockers.h | 10 + .../gmock/include/gmock/gmock-matchers.h | 10 + deps/v8/testing/gmock/include/gmock/gmock.h | 10 + deps/v8/testing/gtest/BUILD.gn | 100 + deps/v8/testing/gtest/OWNERS | 2 + deps/v8/testing/gtest/empty.cc | 3 + deps/v8/testing/gtest/include/DEPS | 3 + .../gtest/include/gtest/gtest-death-test.h | 10 + .../gtest/include/gtest/gtest-message.h | 10 + .../gtest/include/gtest/gtest-param-test.h | 10 + .../testing/gtest/include/gtest/gtest-spi.h | 10 + deps/v8/testing/gtest/include/gtest/gtest.h | 10 + .../testing/gtest/include/gtest/gtest_prod.h | 64 +- deps/v8/third_party/antlr4/LICENSE.txt | 52 + .../third_party/antlr4/runtime/Cpp/README.md | 59 + .../v8/third_party/antlr4/runtime/Cpp/VERSION | 1 + .../Cpp/runtime/src/ANTLRErrorListener.cpp | 8 + .../Cpp/runtime/src/ANTLRErrorListener.h | 171 + .../Cpp/runtime/src/ANTLRErrorStrategy.cpp | 8 + .../Cpp/runtime/src/ANTLRErrorStrategy.h | 121 + .../Cpp/runtime/src/ANTLRFileStream.cpp | 32 + .../runtime/Cpp/runtime/src/ANTLRFileStream.h | 28 + .../Cpp/runtime/src/ANTLRInputStream.cpp | 143 + .../Cpp/runtime/src/ANTLRInputStream.h | 69 + .../Cpp/runtime/src/BailErrorStrategy.cpp | 59 + .../Cpp/runtime/src/BailErrorStrategy.h | 60 + .../Cpp/runtime/src/BaseErrorListener.cpp | 32 + .../Cpp/runtime/src/BaseErrorListener.h | 43 + .../Cpp/runtime/src/BufferedTokenStream.cpp | 407 ++ .../Cpp/runtime/src/BufferedTokenStream.h | 207 + .../runtime/Cpp/runtime/src/CharStream.cpp | 10 + .../runtime/Cpp/runtime/src/CharStream.h | 38 + .../runtime/Cpp/runtime/src/CommonToken.cpp | 170 + .../runtime/Cpp/runtime/src/CommonToken.h | 162 + .../Cpp/runtime/src/CommonTokenFactory.cpp | 41 + .../Cpp/runtime/src/CommonTokenFactory.h | 77 + .../Cpp/runtime/src/CommonTokenStream.cpp | 77 + .../Cpp/runtime/src/CommonTokenStream.h | 78 + .../Cpp/runtime/src/ConsoleErrorListener.cpp | 19 + .../Cpp/runtime/src/ConsoleErrorListener.h | 37 + .../Cpp/runtime/src/DefaultErrorStrategy.cpp | 355 ++ .../Cpp/runtime/src/DefaultErrorStrategy.h | 478 ++ .../runtime/src/DiagnosticErrorListener.cpp | 101 + .../Cpp/runtime/src/DiagnosticErrorListener.h | 89 + .../runtime/Cpp/runtime/src/Exceptions.cpp | 61 + .../runtime/Cpp/runtime/src/Exceptions.h | 109 + .../runtime/src/FailedPredicateException.cpp | 51 + .../runtime/src/FailedPredicateException.h | 33 + .../runtime/src/InputMismatchException.cpp | 17 + .../Cpp/runtime/src/InputMismatchException.h | 24 + .../runtime/Cpp/runtime/src/IntStream.cpp | 12 + .../runtime/Cpp/runtime/src/IntStream.h | 222 + .../runtime/src/InterpreterRuleContext.cpp | 17 + .../Cpp/runtime/src/InterpreterRuleContext.h | 46 + .../antlr4/runtime/Cpp/runtime/src/Lexer.cpp | 274 + .../antlr4/runtime/Cpp/runtime/src/Lexer.h | 198 + .../Cpp/runtime/src/LexerInterpreter.cpp | 82 + .../Cpp/runtime/src/LexerInterpreter.h | 58 + .../runtime/src/LexerNoViableAltException.cpp | 37 + .../runtime/src/LexerNoViableAltException.h | 31 + .../Cpp/runtime/src/ListTokenSource.cpp | 95 + .../runtime/Cpp/runtime/src/ListTokenSource.h | 94 + .../Cpp/runtime/src/NoViableAltException.cpp | 33 + .../Cpp/runtime/src/NoViableAltException.h | 41 + .../antlr4/runtime/Cpp/runtime/src/Parser.cpp | 637 +++ .../antlr4/runtime/Cpp/runtime/src/Parser.h | 489 ++ .../Cpp/runtime/src/ParserInterpreter.cpp | 340 ++ .../Cpp/runtime/src/ParserInterpreter.h | 186 + .../Cpp/runtime/src/ParserRuleContext.cpp | 138 + .../Cpp/runtime/src/ParserRuleContext.h | 149 + .../Cpp/runtime/src/ProxyErrorListener.cpp | 63 + .../Cpp/runtime/src/ProxyErrorListener.h | 45 + .../Cpp/runtime/src/RecognitionException.cpp | 67 + .../Cpp/runtime/src/RecognitionException.h | 100 + .../runtime/Cpp/runtime/src/Recognizer.cpp | 163 + .../runtime/Cpp/runtime/src/Recognizer.h | 171 + .../runtime/Cpp/runtime/src/RuleContext.cpp | 133 + .../runtime/Cpp/runtime/src/RuleContext.h | 143 + .../Cpp/runtime/src/RuleContextWithAltNum.cpp | 23 + .../Cpp/runtime/src/RuleContextWithAltNum.h | 32 + .../Cpp/runtime/src/RuntimeMetaData.cpp | 62 + .../runtime/Cpp/runtime/src/RuntimeMetaData.h | 159 + .../antlr4/runtime/Cpp/runtime/src/Token.cpp | 8 + .../antlr4/runtime/Cpp/runtime/src/Token.h | 93 + .../runtime/Cpp/runtime/src/TokenFactory.h | 34 + .../runtime/Cpp/runtime/src/TokenSource.cpp | 8 + .../runtime/Cpp/runtime/src/TokenSource.h | 87 + .../runtime/Cpp/runtime/src/TokenStream.cpp | 10 + .../runtime/Cpp/runtime/src/TokenStream.h | 138 + .../Cpp/runtime/src/TokenStreamRewriter.cpp | 463 ++ .../Cpp/runtime/src/TokenStreamRewriter.h | 307 ++ .../Cpp/runtime/src/UnbufferedCharStream.cpp | 215 + .../Cpp/runtime/src/UnbufferedCharStream.h | 125 + .../Cpp/runtime/src/UnbufferedTokenStream.cpp | 257 + .../Cpp/runtime/src/UnbufferedTokenStream.h | 117 + .../runtime/Cpp/runtime/src/Vocabulary.cpp | 108 + .../runtime/Cpp/runtime/src/Vocabulary.h | 198 + .../runtime/Cpp/runtime/src/WritableToken.cpp | 8 + .../runtime/Cpp/runtime/src/WritableToken.h | 23 + .../runtime/Cpp/runtime/src/antlr4-common.h | 134 + .../runtime/Cpp/runtime/src/antlr4-runtime.h | 164 + .../runtime/Cpp/runtime/src/atn/ATN.cpp | 212 + .../antlr4/runtime/Cpp/runtime/src/atn/ATN.h | 115 + .../runtime/Cpp/runtime/src/atn/ATNConfig.cpp | 118 + .../runtime/Cpp/runtime/src/atn/ATNConfig.h | 148 + .../Cpp/runtime/src/atn/ATNConfigSet.cpp | 224 + .../Cpp/runtime/src/atn/ATNConfigSet.h | 114 + .../src/atn/ATNDeserializationOptions.cpp | 61 + .../src/atn/ATNDeserializationOptions.h | 51 + .../Cpp/runtime/src/atn/ATNDeserializer.cpp | 813 +++ .../Cpp/runtime/src/atn/ATNDeserializer.h | 88 + .../Cpp/runtime/src/atn/ATNSerializer.cpp | 622 +++ .../Cpp/runtime/src/atn/ATNSerializer.h | 61 + .../Cpp/runtime/src/atn/ATNSimulator.cpp | 68 + .../Cpp/runtime/src/atn/ATNSimulator.h | 93 + .../runtime/Cpp/runtime/src/atn/ATNState.cpp | 69 + .../runtime/Cpp/runtime/src/atn/ATNState.h | 134 + .../runtime/Cpp/runtime/src/atn/ATNType.h | 20 + .../src/atn/AbstractPredicateTransition.cpp | 13 + .../src/atn/AbstractPredicateTransition.h | 22 + .../Cpp/runtime/src/atn/ActionTransition.cpp | 41 + .../Cpp/runtime/src/atn/ActionTransition.h | 35 + .../Cpp/runtime/src/atn/AmbiguityInfo.cpp | 18 + .../Cpp/runtime/src/atn/AmbiguityInfo.h | 70 + .../src/atn/ArrayPredictionContext.cpp | 84 + .../runtime/src/atn/ArrayPredictionContext.h | 45 + .../Cpp/runtime/src/atn/AtomTransition.cpp | 33 + .../Cpp/runtime/src/atn/AtomTransition.h | 31 + .../runtime/src/atn/BasicBlockStartState.cpp | 10 + .../runtime/src/atn/BasicBlockStartState.h | 20 + .../Cpp/runtime/src/atn/BasicState.cpp | 10 + .../runtime/Cpp/runtime/src/atn/BasicState.h | 19 + .../Cpp/runtime/src/atn/BlockEndState.cpp | 12 + .../Cpp/runtime/src/atn/BlockEndState.h | 24 + .../Cpp/runtime/src/atn/BlockStartState.cpp | 8 + .../Cpp/runtime/src/atn/BlockStartState.h | 21 + .../src/atn/ContextSensitivityInfo.cpp | 17 + .../runtime/src/atn/ContextSensitivityInfo.h | 49 + .../Cpp/runtime/src/atn/DecisionEventInfo.cpp | 19 + .../Cpp/runtime/src/atn/DecisionEventInfo.h | 70 + .../Cpp/runtime/src/atn/DecisionInfo.cpp | 28 + .../Cpp/runtime/src/atn/DecisionInfo.h | 232 + .../Cpp/runtime/src/atn/DecisionState.cpp | 17 + .../Cpp/runtime/src/atn/DecisionState.h | 28 + .../src/atn/EmptyPredictionContext.cpp | 30 + .../runtime/src/atn/EmptyPredictionContext.h | 28 + .../Cpp/runtime/src/atn/EpsilonTransition.cpp | 35 + .../Cpp/runtime/src/atn/EpsilonTransition.h | 40 + .../runtime/Cpp/runtime/src/atn/ErrorInfo.cpp | 16 + .../runtime/Cpp/runtime/src/atn/ErrorInfo.h | 44 + .../Cpp/runtime/src/atn/LL1Analyzer.cpp | 173 + .../runtime/Cpp/runtime/src/atn/LL1Analyzer.h | 118 + .../Cpp/runtime/src/atn/LexerATNConfig.cpp | 90 + .../Cpp/runtime/src/atn/LexerATNConfig.h | 50 + .../Cpp/runtime/src/atn/LexerATNSimulator.cpp | 683 +++ .../Cpp/runtime/src/atn/LexerATNSimulator.h | 223 + .../Cpp/runtime/src/atn/LexerAction.cpp | 8 + .../runtime/Cpp/runtime/src/atn/LexerAction.h | 68 + .../runtime/src/atn/LexerActionExecutor.cpp | 116 + .../Cpp/runtime/src/atn/LexerActionExecutor.h | 124 + .../Cpp/runtime/src/atn/LexerActionType.h | 55 + .../runtime/src/atn/LexerChannelAction.cpp | 49 + .../Cpp/runtime/src/atn/LexerChannelAction.h | 68 + .../Cpp/runtime/src/atn/LexerCustomAction.cpp | 58 + .../Cpp/runtime/src/atn/LexerCustomAction.h | 92 + .../src/atn/LexerIndexedCustomAction.cpp | 58 + .../src/atn/LexerIndexedCustomAction.h | 85 + .../Cpp/runtime/src/atn/LexerModeAction.cpp | 49 + .../Cpp/runtime/src/atn/LexerModeAction.h | 63 + .../Cpp/runtime/src/atn/LexerMoreAction.cpp | 40 + .../Cpp/runtime/src/atn/LexerMoreAction.h | 61 + .../runtime/src/atn/LexerPopModeAction.cpp | 40 + .../Cpp/runtime/src/atn/LexerPopModeAction.h | 61 + .../runtime/src/atn/LexerPushModeAction.cpp | 50 + .../Cpp/runtime/src/atn/LexerPushModeAction.h | 64 + .../Cpp/runtime/src/atn/LexerSkipAction.cpp | 40 + .../Cpp/runtime/src/atn/LexerSkipAction.h | 59 + .../Cpp/runtime/src/atn/LexerTypeAction.cpp | 49 + .../Cpp/runtime/src/atn/LexerTypeAction.h | 58 + .../runtime/src/atn/LookaheadEventInfo.cpp | 18 + .../Cpp/runtime/src/atn/LookaheadEventInfo.h | 43 + .../Cpp/runtime/src/atn/LoopEndState.cpp | 10 + .../Cpp/runtime/src/atn/LoopEndState.h | 22 + .../runtime/Cpp/runtime/src/atn/Makefile | 67 + .../Cpp/runtime/src/atn/NotSetTransition.cpp | 30 + .../Cpp/runtime/src/atn/NotSetTransition.h | 26 + .../runtime/src/atn/OrderedATNConfigSet.cpp | 10 + .../Cpp/runtime/src/atn/OrderedATNConfigSet.h | 20 + .../runtime/Cpp/runtime/src/atn/ParseInfo.cpp | 101 + .../runtime/Cpp/runtime/src/atn/ParseInfo.h | 103 + .../runtime/src/atn/ParserATNSimulator.cpp | 1508 ++++++ .../Cpp/runtime/src/atn/ParserATNSimulator.h | 942 ++++ .../runtime/src/atn/PlusBlockStartState.cpp | 10 + .../Cpp/runtime/src/atn/PlusBlockStartState.h | 25 + .../Cpp/runtime/src/atn/PlusLoopbackState.cpp | 10 + .../Cpp/runtime/src/atn/PlusLoopbackState.h | 21 + .../src/atn/PrecedencePredicateTransition.cpp | 35 + .../src/atn/PrecedencePredicateTransition.h | 30 + .../Cpp/runtime/src/atn/PredicateEvalInfo.cpp | 22 + .../Cpp/runtime/src/atn/PredicateEvalInfo.h | 64 + .../runtime/src/atn/PredicateTransition.cpp | 41 + .../Cpp/runtime/src/atn/PredicateTransition.h | 41 + .../Cpp/runtime/src/atn/PredictionContext.cpp | 694 +++ .../Cpp/runtime/src/atn/PredictionContext.h | 290 + .../Cpp/runtime/src/atn/PredictionMode.cpp | 217 + .../Cpp/runtime/src/atn/PredictionMode.h | 442 ++ .../runtime/src/atn/ProfilingATNSimulator.cpp | 221 + .../runtime/src/atn/ProfilingATNSimulator.h | 74 + .../Cpp/runtime/src/atn/RangeTransition.cpp | 33 + .../Cpp/runtime/src/atn/RangeTransition.h | 30 + .../Cpp/runtime/src/atn/RuleStartState.cpp | 12 + .../Cpp/runtime/src/atn/RuleStartState.h | 24 + .../Cpp/runtime/src/atn/RuleStopState.cpp | 10 + .../Cpp/runtime/src/atn/RuleStopState.h | 23 + .../Cpp/runtime/src/atn/RuleTransition.cpp | 38 + .../Cpp/runtime/src/atn/RuleTransition.h | 44 + .../Cpp/runtime/src/atn/SemanticContext.cpp | 400 ++ .../Cpp/runtime/src/atn/SemanticContext.h | 229 + .../Cpp/runtime/src/atn/SetTransition.cpp | 31 + .../Cpp/runtime/src/atn/SetTransition.h | 31 + .../src/atn/SingletonPredictionContext.cpp | 80 + .../src/atn/SingletonPredictionContext.h | 39 + .../runtime/src/atn/StarBlockStartState.cpp | 10 + .../Cpp/runtime/src/atn/StarBlockStartState.h | 20 + .../runtime/src/atn/StarLoopEntryState.cpp | 13 + .../Cpp/runtime/src/atn/StarLoopEntryState.h | 35 + .../Cpp/runtime/src/atn/StarLoopbackState.cpp | 17 + .../Cpp/runtime/src/atn/StarLoopbackState.h | 21 + .../Cpp/runtime/src/atn/TokensStartState.cpp | 10 + .../Cpp/runtime/src/atn/TokensStartState.h | 20 + .../Cpp/runtime/src/atn/Transition.cpp | 42 + .../runtime/Cpp/runtime/src/atn/Transition.h | 77 + .../runtime/src/atn/WildcardTransition.cpp | 25 + .../Cpp/runtime/src/atn/WildcardTransition.h | 26 + .../runtime/Cpp/runtime/src/dfa/DFA.cpp | 125 + .../antlr4/runtime/Cpp/runtime/src/dfa/DFA.h | 93 + .../Cpp/runtime/src/dfa/DFASerializer.cpp | 68 + .../Cpp/runtime/src/dfa/DFASerializer.h | 32 + .../runtime/Cpp/runtime/src/dfa/DFAState.cpp | 95 + .../runtime/Cpp/runtime/src/dfa/DFAState.h | 142 + .../runtime/src/dfa/LexerDFASerializer.cpp | 19 + .../Cpp/runtime/src/dfa/LexerDFASerializer.h | 23 + .../src/misc/InterpreterDataReader.cpp | 119 + .../runtime/src/misc/InterpreterDataReader.h | 32 + .../runtime/Cpp/runtime/src/misc/Interval.cpp | 88 + .../runtime/Cpp/runtime/src/misc/Interval.h | 85 + .../Cpp/runtime/src/misc/IntervalSet.cpp | 516 ++ .../Cpp/runtime/src/misc/IntervalSet.h | 198 + .../Cpp/runtime/src/misc/MurmurHash.cpp | 127 + .../runtime/Cpp/runtime/src/misc/MurmurHash.h | 76 + .../Cpp/runtime/src/misc/Predicate.cpp | 3 + .../runtime/Cpp/runtime/src/misc/Predicate.h | 21 + .../runtime/Cpp/runtime/src/support/Any.cpp | 12 + .../runtime/Cpp/runtime/src/support/Any.h | 121 + .../Cpp/runtime/src/support/Arrays.cpp | 44 + .../runtime/Cpp/runtime/src/support/Arrays.h | 101 + .../runtime/Cpp/runtime/src/support/BitSet.h | 75 + .../Cpp/runtime/src/support/CPPUtils.cpp | 237 + .../Cpp/runtime/src/support/CPPUtils.h | 87 + .../Cpp/runtime/src/support/Declarations.h | 165 + .../Cpp/runtime/src/support/StringUtils.cpp | 36 + .../Cpp/runtime/src/support/StringUtils.h | 35 + .../runtime/Cpp/runtime/src/support/guid.cpp | 232 + .../runtime/Cpp/runtime/src/support/guid.h | 111 + .../src/tree/AbstractParseTreeVisitor.h | 127 + .../Cpp/runtime/src/tree/ErrorNode.cpp | 8 + .../runtime/Cpp/runtime/src/tree/ErrorNode.h | 19 + .../Cpp/runtime/src/tree/ErrorNodeImpl.cpp | 21 + .../Cpp/runtime/src/tree/ErrorNodeImpl.h | 34 + .../src/tree/IterativeParseTreeWalker.cpp | 71 + .../src/tree/IterativeParseTreeWalker.h | 53 + .../Cpp/runtime/src/tree/ParseTree.cpp | 14 + .../runtime/Cpp/runtime/src/tree/ParseTree.h | 107 + .../runtime/src/tree/ParseTreeListener.cpp | 8 + .../Cpp/runtime/src/tree/ParseTreeListener.h | 38 + .../Cpp/runtime/src/tree/ParseTreeProperty.h | 44 + .../Cpp/runtime/src/tree/ParseTreeVisitor.cpp | 8 + .../Cpp/runtime/src/tree/ParseTreeVisitor.h | 58 + .../Cpp/runtime/src/tree/ParseTreeWalker.cpp | 50 + .../Cpp/runtime/src/tree/ParseTreeWalker.h | 32 + .../Cpp/runtime/src/tree/TerminalNode.cpp | 8 + .../Cpp/runtime/src/tree/TerminalNode.h | 32 + .../Cpp/runtime/src/tree/TerminalNodeImpl.cpp | 50 + .../Cpp/runtime/src/tree/TerminalNodeImpl.h | 32 + .../runtime/Cpp/runtime/src/tree/Trees.cpp | 241 + .../runtime/Cpp/runtime/src/tree/Trees.h | 84 + .../Cpp/runtime/src/tree/pattern/Chunk.cpp | 8 + .../Cpp/runtime/src/tree/pattern/Chunk.h | 44 + .../src/tree/pattern/ParseTreeMatch.cpp | 65 + .../runtime/src/tree/pattern/ParseTreeMatch.h | 141 + .../src/tree/pattern/ParseTreePattern.cpp | 61 + .../src/tree/pattern/ParseTreePattern.h | 111 + .../tree/pattern/ParseTreePatternMatcher.cpp | 388 ++ .../tree/pattern/ParseTreePatternMatcher.h | 196 + .../runtime/src/tree/pattern/RuleTagToken.cpp | 57 + .../runtime/src/tree/pattern/RuleTagToken.h | 130 + .../Cpp/runtime/src/tree/pattern/TagChunk.cpp | 33 + .../Cpp/runtime/src/tree/pattern/TagChunk.h | 87 + .../runtime/src/tree/pattern/TextChunk.cpp | 24 + .../Cpp/runtime/src/tree/pattern/TextChunk.h | 53 + .../src/tree/pattern/TokenTagToken.cpp | 31 + .../runtime/src/tree/pattern/TokenTagToken.h | 84 + .../Cpp/runtime/src/tree/xpath/XPath.cpp | 148 + .../Cpp/runtime/src/tree/xpath/XPath.h | 85 + .../runtime/src/tree/xpath/XPathElement.cpp | 26 + .../Cpp/runtime/src/tree/xpath/XPathElement.h | 40 + .../Cpp/runtime/src/tree/xpath/XPathLexer.cpp | 177 + .../Cpp/runtime/src/tree/xpath/XPathLexer.g4 | 64 + .../Cpp/runtime/src/tree/xpath/XPathLexer.h | 59 + .../runtime/src/tree/xpath/XPathLexer.tokens | 12 + .../tree/xpath/XPathLexerErrorListener.cpp | 16 + .../src/tree/xpath/XPathLexerErrorListener.h | 24 + .../tree/xpath/XPathRuleAnywhereElement.cpp | 22 + .../src/tree/xpath/XPathRuleAnywhereElement.h | 27 + .../src/tree/xpath/XPathRuleElement.cpp | 33 + .../runtime/src/tree/xpath/XPathRuleElement.h | 26 + .../tree/xpath/XPathTokenAnywhereElement.cpp | 22 + .../tree/xpath/XPathTokenAnywhereElement.h | 26 + .../src/tree/xpath/XPathTokenElement.cpp | 36 + .../src/tree/xpath/XPathTokenElement.h | 26 + .../xpath/XPathWildcardAnywhereElement.cpp | 23 + .../tree/xpath/XPathWildcardAnywhereElement.h | 23 + .../src/tree/xpath/XPathWildcardElement.cpp | 23 + .../src/tree/xpath/XPathWildcardElement.h | 23 + deps/v8/third_party/googletest/BUILD.gn | 148 + deps/v8/third_party/googletest/OWNERS | 2 + .../v8/third_party/googletest/README.chromium | 17 + .../custom/gtest/internal/custom/gtest-port.h | 27 + .../gmock/internal/custom/gmock-port.h | 12 +- .../src/googletest/include/gtest/gtest_prod.h | 61 + deps/v8/third_party/jinja2/AUTHORS | 1 + .../third_party/jinja2/Jinja2-2.10.tar.gz.md5 | 1 + .../jinja2/Jinja2-2.10.tar.gz.sha512 | 1 + .../third_party/jinja2/Jinja2-2.8.tar.gz.md5 | 1 - .../jinja2/Jinja2-2.8.tar.gz.sha512 | 1 - deps/v8/third_party/jinja2/LICENSE | 62 +- deps/v8/third_party/jinja2/README.chromium | 15 +- deps/v8/third_party/jinja2/__init__.py | 21 +- deps/v8/third_party/jinja2/_compat.py | 22 +- deps/v8/third_party/jinja2/_identifier.py | 2 + deps/v8/third_party/jinja2/_stringdefs.py | 132 - deps/v8/third_party/jinja2/asyncfilters.py | 146 + deps/v8/third_party/jinja2/asyncsupport.py | 256 + deps/v8/third_party/jinja2/bccache.py | 6 +- deps/v8/third_party/jinja2/compiler.py | 1135 ++-- deps/v8/third_party/jinja2/constants.py | 2 +- deps/v8/third_party/jinja2/debug.py | 42 +- deps/v8/third_party/jinja2/defaults.py | 19 +- deps/v8/third_party/jinja2/environment.py | 177 +- deps/v8/third_party/jinja2/exceptions.py | 2 +- deps/v8/third_party/jinja2/ext.py | 55 +- deps/v8/third_party/jinja2/filters.py | 416 +- deps/v8/third_party/jinja2/get_jinja2.sh | 18 +- deps/v8/third_party/jinja2/idtracking.py | 286 + deps/v8/third_party/jinja2/jinja2.gni | 31 + deps/v8/third_party/jinja2/lexer.py | 57 +- deps/v8/third_party/jinja2/loaders.py | 6 +- deps/v8/third_party/jinja2/meta.py | 11 +- deps/v8/third_party/jinja2/nativetypes.py | 220 + deps/v8/third_party/jinja2/nodes.py | 184 +- deps/v8/third_party/jinja2/optimizer.py | 25 +- deps/v8/third_party/jinja2/parser.py | 142 +- deps/v8/third_party/jinja2/runtime.py | 288 +- deps/v8/third_party/jinja2/sandbox.py | 128 +- deps/v8/third_party/jinja2/tests.py | 52 +- deps/v8/third_party/jinja2/utils.py | 140 +- deps/v8/third_party/jinja2/visitor.py | 2 +- deps/v8/tools/BUILD.gn | 58 +- deps/v8/tools/cfi/blacklist.txt | 24 +- .../tools/check-static-initializers.isolate | 16 - .../clusterfuzz/testdata/failure_output.txt | 4 +- deps/v8/tools/clusterfuzz/v8_foozzie.py | 7 +- .../clusterfuzz/v8_foozzie_harness_adjust.js | 38 +- deps/v8/tools/clusterfuzz/v8_foozzie_test.py | 2 +- deps/v8/tools/clusterfuzz/v8_fuzz_config.py | 10 +- deps/v8/tools/gcmole/BUILD.gn | 33 + deps/v8/tools/gcmole/run-gcmole.isolate | 35 - deps/v8/tools/gen-postmortem-metadata.py | 4 +- deps/v8/tools/grokdump.py | 6 +- deps/v8/tools/heap-stats/categories.js | 11 +- .../tools/heap-stats/details-selection.html | 41 +- deps/v8/tools/heap-stats/details-selection.js | 175 +- deps/v8/tools/heap-stats/global-timeline.js | 17 +- deps/v8/tools/heap-stats/helper.js | 23 + deps/v8/tools/heap-stats/histogram-viewer.js | 17 +- deps/v8/tools/heap-stats/index.html | 8 +- deps/v8/tools/heap-stats/model.js | 58 +- .../tools/heap-stats/trace-file-reader.html | 17 +- deps/v8/tools/heap-stats/trace-file-reader.js | 22 +- deps/v8/tools/ic-processor.js | 5 + deps/v8/tools/isolate_driver.py | 340 -- deps/v8/tools/jsfunfuzz/BUILD.gn | 19 + deps/v8/tools/jsfunfuzz/jsfunfuzz.isolate | 18 - deps/v8/tools/mb/mb.py | 6 +- deps/v8/tools/mb/mb_unittest.py | 3 - deps/v8/tools/node/fetch_deps.py | 16 +- deps/v8/tools/node/node_common.py | 5 +- deps/v8/tools/node/test_update_node.py | 23 +- deps/v8/tools/node/testdata/v8/.gitignore | 3 +- .../testdata/v8/testing/gtest/baz/gtest_foo | 1 + .../testdata/v8/testing/gtest/baz/gtest_new | 1 + .../node/testdata/v8/testing/gtest/gtest_bar | 1 + .../node/testdata/v8/testing/gtest/gtest_new | 1 + .../testdata/v8/testing/gtest/new/gtest_new | 1 + deps/v8/tools/node/update_node.py | 21 +- deps/v8/tools/predictable_wrapper.py | 3 +- deps/v8/tools/presubmit.py | 2 + deps/v8/tools/release/auto_roll.py | 6 +- deps/v8/tools/release/test_scripts.py | 5 +- .../googletest/include/gtest/baz/gtest_new | 0 .../src/googletest/include/gtest/gtest_new | 0 .../src/googletest/include/gtest/gtest_prod.h | 1 + .../googletest/include/gtest/new/gtest_new | 0 deps/v8/tools/run-num-fuzzer.isolate | 20 - deps/v8/tools/run_perf.py | 6 + deps/v8/tools/testrunner/base_runner.py | 5 + deps/v8/tools/testrunner/local/statusfile.py | 2 +- deps/v8/tools/testrunner/local/variants.py | 3 +- deps/v8/tools/testrunner/standard_runner.py | 2 +- deps/v8/tools/testrunner/testrunner.isolate | 25 - deps/v8/tools/toolchain/BUILD.gn | 70 + deps/v8/tools/v8heapconst.py | 518 +- deps/v8/tools/valgrind/asan/dummy | 2 + deps/v8/tools/whitespace.txt | 2 +- 1596 files changed, 91049 insertions(+), 40968 deletions(-) delete mode 100644 deps/v8/gni/isolate.gni delete mode 100644 deps/v8/gni/msvs_dependencies.isolate create mode 100644 deps/v8/infra/mb/gn_isolate_map.pyl delete mode 100644 deps/v8/src/api-arguments.cc delete mode 100644 deps/v8/src/base.isolate delete mode 100644 deps/v8/src/d8.isolate create mode 100644 deps/v8/src/external-reference.cc create mode 100644 deps/v8/src/external-reference.h rename deps/v8/src/{ => heap}/factory-inl.h (97%) rename deps/v8/src/{ => heap}/factory.cc (63%) rename deps/v8/src/{ => heap}/factory.h (80%) delete mode 100644 deps/v8/src/js/messages.js delete mode 100644 deps/v8/src/js/spread.js rename deps/v8/src/libplatform/{default-background-task-runner.cc => default-worker-threads-task-runner.cc} (59%) rename deps/v8/src/libplatform/{default-background-task-runner.h => default-worker-threads-task-runner.h} (72%) create mode 100644 deps/v8/src/objects/js-regexp-string-iterator-inl.h create mode 100644 deps/v8/src/objects/js-regexp-string-iterator.h create mode 100644 deps/v8/src/objects/maybe-object-inl.h create mode 100644 deps/v8/src/objects/maybe-object.h rename deps/v8/src/{compilation-info.cc => optimized-compilation-info.cc} (50%) rename deps/v8/src/{compilation-info.h => optimized-compilation-info.h} (61%) create mode 100644 deps/v8/src/snapshot/embedded-empty.cc create mode 100644 deps/v8/src/snapshot/macros.h create mode 100644 deps/v8/src/unoptimized-compilation-info.cc create mode 100644 deps/v8/src/unoptimized-compilation-info.h create mode 100644 deps/v8/src/wasm/baseline/mips/OWNERS create mode 100644 deps/v8/src/wasm/baseline/mips64/OWNERS delete mode 100644 deps/v8/src/wasm/wasm-code-wrapper.cc delete mode 100644 deps/v8/src/wasm/wasm-code-wrapper.h create mode 100644 deps/v8/test/benchmarks/BUILD.gn delete mode 100644 deps/v8/test/benchmarks/benchmarks.isolate delete mode 100644 deps/v8/test/bot_default.isolate delete mode 100644 deps/v8/test/cctest/cctest.isolate delete mode 100644 deps/v8/test/cctest/cctest_exe.isolate create mode 100644 deps/v8/test/cctest/compiler/test-instruction-scheduler.cc delete mode 100644 deps/v8/test/cctest/compiler/test-run-wasm-machops.cc create mode 100644 deps/v8/test/cctest/heap/test-weak-references.cc create mode 100644 deps/v8/test/cctest/interpreter/bytecode_expectations/TemplateLiterals.golden delete mode 100644 deps/v8/test/cctest/test-run-wasm-relocation-arm.cc delete mode 100644 deps/v8/test/cctest/test-run-wasm-relocation-arm64.cc delete mode 100644 deps/v8/test/cctest/test-run-wasm-relocation-ia32.cc delete mode 100644 deps/v8/test/cctest/test-run-wasm-relocation-x64.cc create mode 100644 deps/v8/test/cctest/wasm/test-run-wasm-atomics64.cc delete mode 100644 deps/v8/test/cctest/wasm/test-run-wasm-relocation.cc create mode 100644 deps/v8/test/cctest/wasm/wasm-atomics-utils.h delete mode 100644 deps/v8/test/d8_default.isolate create mode 100644 deps/v8/test/debugger/BUILD.gn create mode 100644 deps/v8/test/debugger/debug/debug-bigint.js create mode 100644 deps/v8/test/debugger/debug/es6/debug-promises/reject-in-constructor-opt.js create mode 100644 deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-runtime-check.js delete mode 100644 deps/v8/test/debugger/debugger.isolate delete mode 100644 deps/v8/test/default.isolate create mode 100644 deps/v8/test/fuzzer/BUILD.gn delete mode 100644 deps/v8/test/fuzzer/fuzzer.isolate create mode 100644 deps/v8/test/inspector/debugger/breakpoints-and-side-effects-expected.txt create mode 100644 deps/v8/test/inspector/debugger/breakpoints-and-side-effects.js delete mode 100644 deps/v8/test/inspector/inspector.isolate create mode 100644 deps/v8/test/inspector/runtime/evaluate-unserializable-expected.txt create mode 100644 deps/v8/test/inspector/runtime/evaluate-unserializable.js create mode 100644 deps/v8/test/inspector/runtime/evaluate-without-side-effects-expected.txt create mode 100644 deps/v8/test/inspector/runtime/evaluate-without-side-effects.js create mode 100644 deps/v8/test/inspector/runtime/get-heap-usage-expected.txt create mode 100644 deps/v8/test/inspector/runtime/get-heap-usage.js create mode 100644 deps/v8/test/inspector/runtime/get-isolate-id-expected.txt create mode 100644 deps/v8/test/inspector/runtime/get-isolate-id.js create mode 100644 deps/v8/test/inspector/runtime/terminate-execution-expected.txt create mode 100644 deps/v8/test/inspector/runtime/terminate-execution.js create mode 100644 deps/v8/test/intl/BUILD.gn create mode 100644 deps/v8/test/intl/date-format/format-with-extensions.js delete mode 100644 deps/v8/test/intl/intl.isolate create mode 100644 deps/v8/test/js-perf-test/ArraySort/run.js create mode 100644 deps/v8/test/js-perf-test/ArraySort/sort.js create mode 100644 deps/v8/test/js-perf-test/ObjectLiteralSpread/run.js create mode 100644 deps/v8/test/js-perf-test/SpreadCallsGeneral/run.js create mode 100644 deps/v8/test/js-perf-test/Strings/string-matchall.js create mode 100644 deps/v8/test/js-perf-test/Strings/string-stringat-comp.js create mode 100644 deps/v8/test/js-perf-test/Strings/string-stringat.js create mode 100644 deps/v8/test/js-perf-test/Strings/string-substring.js create mode 100644 deps/v8/test/js-perf-test/TypedArrays/sort-cmpfn-float.js create mode 100644 deps/v8/test/js-perf-test/TypedArrays/sort-cmpfn-int.js create mode 100644 deps/v8/test/js-perf-test/TypedArrays/sort-float.js create mode 100644 deps/v8/test/js-perf-test/TypedArrays/sort-int.js create mode 100644 deps/v8/test/message/BUILD.gn create mode 100644 deps/v8/test/message/fail/call-expression.js create mode 100644 deps/v8/test/message/fail/call-expression.out create mode 100644 deps/v8/test/message/fail/map-arg-non-iterable.js create mode 100644 deps/v8/test/message/fail/map-arg-non-iterable.out create mode 100644 deps/v8/test/message/fail/octal-template-literal.js create mode 100644 deps/v8/test/message/fail/octal-template-literal.out delete mode 100644 deps/v8/test/message/message.isolate create mode 100644 deps/v8/test/message/wasm-finish-compilation.js create mode 100644 deps/v8/test/message/wasm-finish-compilation.out create mode 100644 deps/v8/test/message/wasm-function-name-async.js create mode 100644 deps/v8/test/message/wasm-function-name-async.out create mode 100644 deps/v8/test/message/wasm-function-name-streaming.js create mode 100644 deps/v8/test/message/wasm-function-name-streaming.out create mode 100644 deps/v8/test/message/wasm-module-and-function-name-async.js create mode 100644 deps/v8/test/message/wasm-module-and-function-name-async.out create mode 100644 deps/v8/test/message/wasm-module-and-function-name-streaming.js create mode 100644 deps/v8/test/message/wasm-module-and-function-name-streaming.out create mode 100644 deps/v8/test/message/wasm-module-name-async.js create mode 100644 deps/v8/test/message/wasm-module-name-async.out create mode 100644 deps/v8/test/message/wasm-module-name-streaming.js create mode 100644 deps/v8/test/message/wasm-module-name-streaming.out create mode 100644 deps/v8/test/message/wasm-no-name-async.js create mode 100644 deps/v8/test/message/wasm-no-name-async.out create mode 100644 deps/v8/test/message/wasm-no-name-streaming.js create mode 100644 deps/v8/test/message/wasm-no-name-streaming.out create mode 100644 deps/v8/test/mjsunit/BUILD.gn create mode 100644 deps/v8/test/mjsunit/compiler/number-isfinite-inl.js create mode 100644 deps/v8/test/mjsunit/compiler/number-isinteger-inl.js create mode 100644 deps/v8/test/mjsunit/compiler/string-comparison-opt.js create mode 100644 deps/v8/test/mjsunit/compiler/string-concat-deopt.js create mode 100644 deps/v8/test/mjsunit/compiler/typed-array-constructor.js create mode 100644 deps/v8/test/mjsunit/es6/promise-all-overflow-1.js create mode 100644 deps/v8/test/mjsunit/es6/promise-all-overflow-2.js create mode 100644 deps/v8/test/mjsunit/es6/promise-all.js create mode 100644 deps/v8/test/mjsunit/es6/regress/regress-crbug-820596.js create mode 100644 deps/v8/test/mjsunit/es6/regress/regress-crbug-837939.js create mode 100644 deps/v8/test/mjsunit/es6/spread-array-misc.js create mode 100644 deps/v8/test/mjsunit/harmony/array-flatMap.js create mode 100644 deps/v8/test/mjsunit/harmony/array-flatten.js create mode 100644 deps/v8/test/mjsunit/harmony/numeric-separator.js create mode 100644 deps/v8/test/mjsunit/harmony/string-matchAll.js delete mode 100644 deps/v8/test/mjsunit/mjsunit.isolate create mode 100644 deps/v8/test/mjsunit/modules-namespace-getownproperty1.js create mode 100644 deps/v8/test/mjsunit/modules-namespace-getownproperty2.js create mode 100644 deps/v8/test/mjsunit/regress/regress-7254.js create mode 100644 deps/v8/test/mjsunit/regress/regress-7510.js create mode 100644 deps/v8/test/mjsunit/regress/regress-7740.js create mode 100644 deps/v8/test/mjsunit/regress/regress-813440.js create mode 100644 deps/v8/test/mjsunit/regress/regress-818070.js create mode 100644 deps/v8/test/mjsunit/regress/regress-818438.js create mode 100644 deps/v8/test/mjsunit/regress/regress-821368.js create mode 100644 deps/v8/test/mjsunit/regress/regress-829889.js create mode 100644 deps/v8/test/mjsunit/regress/regress-842612.js create mode 100644 deps/v8/test/mjsunit/regress/regress-843543.js delete mode 100644 deps/v8/test/mjsunit/regress/regress-arguments-gc.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-813630.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-819086.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-819298.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-820312.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-820820.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-821159-1.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-821159-2.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-821159-3.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-821159-4.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-823069.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-827013.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-831943.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-843022.js create mode 100644 deps/v8/test/mjsunit/regress/regress-store-transition-dict.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-7508.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-7565.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-7579.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-7582.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-769637.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-808848.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-817380.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-820802.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-824681.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-825087a.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-825087b.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-827806.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-831463.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-834619.js create mode 100644 deps/v8/test/mjsunit/tzoffset-seoul-noi18n.js create mode 100644 deps/v8/test/mjsunit/tzoffset-seoul.js create mode 100644 deps/v8/test/mjsunit/tzoffset-transition-apia.js create mode 100644 deps/v8/test/mjsunit/tzoffset-transition-lord-howe.js create mode 100644 deps/v8/test/mjsunit/tzoffset-transition-moscow.js create mode 100644 deps/v8/test/mjsunit/tzoffset-transition-new-york-noi18n.js create mode 100644 deps/v8/test/mjsunit/tzoffset-transition-new-york.js create mode 100644 deps/v8/test/mjsunit/wasm/anyref.js create mode 100644 deps/v8/test/mjsunit/wasm/liftoff-trap-handler.js create mode 100644 deps/v8/test/mjsunit/wasm/mutable-globals.js delete mode 100644 deps/v8/test/mkgrokdump/mkgrokdump.isolate create mode 100644 deps/v8/test/mozilla/BUILD.gn delete mode 100644 deps/v8/test/mozilla/mozilla.isolate delete mode 100644 deps/v8/test/optimize_for_size.isolate delete mode 100644 deps/v8/test/perf.isolate create mode 100644 deps/v8/test/preparser/BUILD.gn delete mode 100644 deps/v8/test/preparser/preparser.isolate delete mode 100755 deps/v8/test/test262/archive.py delete mode 100755 deps/v8/test/test262/list.py delete mode 100644 deps/v8/test/test262/test262.isolate delete mode 100644 deps/v8/test/unittests/unittests.isolate create mode 100644 deps/v8/test/wasm-spec-tests/BUILD.gn delete mode 100644 deps/v8/test/wasm-spec-tests/wasm-spec-tests.isolate create mode 100644 deps/v8/test/webkit/BUILD.gn delete mode 100644 deps/v8/test/webkit/webkit.isolate create mode 100644 deps/v8/testing/gmock/BUILD.gn create mode 100644 deps/v8/testing/gmock/OWNERS create mode 100644 deps/v8/testing/gmock/include/DEPS create mode 100644 deps/v8/testing/gmock/include/gmock/gmock-actions.h create mode 100644 deps/v8/testing/gmock/include/gmock/gmock-generated-function-mockers.h create mode 100644 deps/v8/testing/gmock/include/gmock/gmock-matchers.h create mode 100644 deps/v8/testing/gmock/include/gmock/gmock.h create mode 100644 deps/v8/testing/gtest/BUILD.gn create mode 100644 deps/v8/testing/gtest/OWNERS create mode 100644 deps/v8/testing/gtest/empty.cc create mode 100644 deps/v8/testing/gtest/include/DEPS create mode 100644 deps/v8/testing/gtest/include/gtest/gtest-death-test.h create mode 100644 deps/v8/testing/gtest/include/gtest/gtest-message.h create mode 100644 deps/v8/testing/gtest/include/gtest/gtest-param-test.h create mode 100644 deps/v8/testing/gtest/include/gtest/gtest-spi.h create mode 100644 deps/v8/testing/gtest/include/gtest/gtest.h create mode 100644 deps/v8/third_party/antlr4/LICENSE.txt create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/README.md create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/VERSION create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRErrorListener.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRErrorListener.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRErrorStrategy.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRErrorStrategy.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRFileStream.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRFileStream.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRInputStream.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRInputStream.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/BailErrorStrategy.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/BailErrorStrategy.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/BaseErrorListener.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/BaseErrorListener.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/BufferedTokenStream.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/BufferedTokenStream.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/CharStream.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/CharStream.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/CommonToken.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/CommonToken.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/CommonTokenFactory.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/CommonTokenFactory.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/CommonTokenStream.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/CommonTokenStream.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/ConsoleErrorListener.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/ConsoleErrorListener.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/DefaultErrorStrategy.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/DefaultErrorStrategy.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/DiagnosticErrorListener.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/DiagnosticErrorListener.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/Exceptions.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/Exceptions.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/FailedPredicateException.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/FailedPredicateException.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/InputMismatchException.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/InputMismatchException.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/IntStream.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/IntStream.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/InterpreterRuleContext.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/InterpreterRuleContext.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/Lexer.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/Lexer.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/LexerInterpreter.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/LexerInterpreter.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/LexerNoViableAltException.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/LexerNoViableAltException.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/ListTokenSource.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/ListTokenSource.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/NoViableAltException.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/NoViableAltException.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/Parser.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/Parser.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/ParserInterpreter.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/ParserInterpreter.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/ParserRuleContext.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/ParserRuleContext.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/ProxyErrorListener.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/ProxyErrorListener.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/RecognitionException.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/RecognitionException.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/Recognizer.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/Recognizer.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/RuleContext.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/RuleContext.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/RuleContextWithAltNum.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/RuleContextWithAltNum.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/RuntimeMetaData.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/RuntimeMetaData.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/Token.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/Token.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/TokenFactory.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/TokenSource.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/TokenSource.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/TokenStream.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/TokenStream.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/TokenStreamRewriter.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/TokenStreamRewriter.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/UnbufferedCharStream.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/UnbufferedCharStream.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/UnbufferedTokenStream.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/UnbufferedTokenStream.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/Vocabulary.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/Vocabulary.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/WritableToken.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/WritableToken.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/antlr4-common.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/antlr4-runtime.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATN.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATN.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNConfig.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNConfig.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNConfigSet.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNConfigSet.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNDeserializer.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNDeserializer.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNSerializer.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNSerializer.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNSimulator.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNSimulator.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNState.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNState.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNType.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/AbstractPredicateTransition.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/AbstractPredicateTransition.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ActionTransition.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ActionTransition.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/AmbiguityInfo.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/AmbiguityInfo.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/AtomTransition.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/AtomTransition.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/BasicBlockStartState.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/BasicBlockStartState.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/BasicState.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/BasicState.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/BlockEndState.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/BlockEndState.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/BlockStartState.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/BlockStartState.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/DecisionEventInfo.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/DecisionEventInfo.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/DecisionInfo.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/DecisionInfo.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/DecisionState.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/DecisionState.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/EmptyPredictionContext.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/EmptyPredictionContext.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/EpsilonTransition.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/EpsilonTransition.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ErrorInfo.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ErrorInfo.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LL1Analyzer.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LL1Analyzer.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerATNConfig.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerATNConfig.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerATNSimulator.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerATNSimulator.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerAction.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerAction.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerActionExecutor.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerActionExecutor.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerActionType.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerChannelAction.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerChannelAction.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerCustomAction.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerCustomAction.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerModeAction.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerModeAction.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerMoreAction.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerMoreAction.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerPopModeAction.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerPopModeAction.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerPushModeAction.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerPushModeAction.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerSkipAction.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerSkipAction.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerTypeAction.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerTypeAction.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LoopEndState.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/LoopEndState.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/Makefile create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/NotSetTransition.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/NotSetTransition.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ParseInfo.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ParseInfo.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ParserATNSimulator.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ParserATNSimulator.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/PlusBlockStartState.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/PlusBlockStartState.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/PlusLoopbackState.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/PlusLoopbackState.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredicateTransition.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredicateTransition.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionContext.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionContext.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionMode.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionMode.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/RangeTransition.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/RangeTransition.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/RuleStartState.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/RuleStartState.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/RuleStopState.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/RuleStopState.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/RuleTransition.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/RuleTransition.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/SemanticContext.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/SemanticContext.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/SetTransition.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/SetTransition.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/StarBlockStartState.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/StarBlockStartState.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/StarLoopEntryState.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/StarLoopEntryState.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/StarLoopbackState.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/StarLoopbackState.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/TokensStartState.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/TokensStartState.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/Transition.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/Transition.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/WildcardTransition.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/WildcardTransition.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/dfa/DFA.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/dfa/DFA.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/dfa/DFASerializer.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/dfa/DFASerializer.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/dfa/DFAState.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/dfa/DFAState.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/misc/InterpreterDataReader.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/misc/InterpreterDataReader.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/misc/Interval.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/misc/Interval.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/misc/IntervalSet.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/misc/IntervalSet.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/misc/MurmurHash.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/misc/MurmurHash.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/misc/Predicate.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/misc/Predicate.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/support/Any.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/support/Any.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/support/Arrays.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/support/Arrays.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/support/BitSet.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/support/CPPUtils.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/support/CPPUtils.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/support/Declarations.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/support/StringUtils.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/support/StringUtils.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/support/guid.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/support/guid.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/AbstractParseTreeVisitor.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/ErrorNode.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/ErrorNode.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTree.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTree.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeListener.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeListener.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeProperty.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeWalker.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeWalker.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/TerminalNode.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/TerminalNode.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/Trees.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/Trees.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/Chunk.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/Chunk.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/TagChunk.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/TagChunk.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/TextChunk.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/TextChunk.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPath.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPath.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathElement.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathElement.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.g4 create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.tokens create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.h create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.cpp create mode 100644 deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.h create mode 100644 deps/v8/third_party/googletest/BUILD.gn create mode 100644 deps/v8/third_party/googletest/OWNERS create mode 100644 deps/v8/third_party/googletest/README.chromium create mode 100644 deps/v8/third_party/googletest/custom/gtest/internal/custom/gtest-port.h rename deps/v8/{testing => third_party/googletest}/gmock_custom/gmock/internal/custom/gmock-port.h (72%) create mode 100644 deps/v8/third_party/googletest/src/googletest/include/gtest/gtest_prod.h create mode 100644 deps/v8/third_party/jinja2/Jinja2-2.10.tar.gz.md5 create mode 100644 deps/v8/third_party/jinja2/Jinja2-2.10.tar.gz.sha512 delete mode 100644 deps/v8/third_party/jinja2/Jinja2-2.8.tar.gz.md5 delete mode 100644 deps/v8/third_party/jinja2/Jinja2-2.8.tar.gz.sha512 create mode 100644 deps/v8/third_party/jinja2/_identifier.py delete mode 100644 deps/v8/third_party/jinja2/_stringdefs.py create mode 100644 deps/v8/third_party/jinja2/asyncfilters.py create mode 100644 deps/v8/third_party/jinja2/asyncsupport.py create mode 100644 deps/v8/third_party/jinja2/idtracking.py create mode 100644 deps/v8/third_party/jinja2/jinja2.gni create mode 100644 deps/v8/third_party/jinja2/nativetypes.py delete mode 100644 deps/v8/tools/check-static-initializers.isolate create mode 100644 deps/v8/tools/gcmole/BUILD.gn delete mode 100644 deps/v8/tools/gcmole/run-gcmole.isolate create mode 100644 deps/v8/tools/heap-stats/helper.js delete mode 100644 deps/v8/tools/isolate_driver.py create mode 100644 deps/v8/tools/jsfunfuzz/BUILD.gn delete mode 100644 deps/v8/tools/jsfunfuzz/jsfunfuzz.isolate create mode 100644 deps/v8/tools/node/testdata/v8/testing/gtest/baz/gtest_foo create mode 100644 deps/v8/tools/node/testdata/v8/testing/gtest/baz/gtest_new create mode 100644 deps/v8/tools/node/testdata/v8/testing/gtest/gtest_bar create mode 100644 deps/v8/tools/node/testdata/v8/testing/gtest/gtest_new create mode 100644 deps/v8/tools/node/testdata/v8/testing/gtest/new/gtest_new create mode 100644 deps/v8/tools/release/testdata/v8/third_party/googletest/src/googletest/include/gtest/baz/gtest_new create mode 100644 deps/v8/tools/release/testdata/v8/third_party/googletest/src/googletest/include/gtest/gtest_new create mode 100644 deps/v8/tools/release/testdata/v8/third_party/googletest/src/googletest/include/gtest/gtest_prod.h create mode 100644 deps/v8/tools/release/testdata/v8/third_party/googletest/src/googletest/include/gtest/new/gtest_new delete mode 100644 deps/v8/tools/run-num-fuzzer.isolate delete mode 100644 deps/v8/tools/testrunner/testrunner.isolate create mode 100644 deps/v8/tools/valgrind/asan/dummy diff --git a/deps/v8/.gitignore b/deps/v8/.gitignore index 4ea2ead23d990d..630c3f2a09d3f8 100644 --- a/deps/v8/.gitignore +++ b/deps/v8/.gitignore @@ -49,24 +49,25 @@ /test/fuzzer/wasm_corpus.tar.gz /test/mozilla/data /test/test262/data -/test/test262/data.tar /test/test262/harness /test/wasm-js /test/wasm-spec-tests/tests /test/wasm-spec-tests/tests.tar.gz -/testing/gmock -/testing/gtest/* -!/testing/gtest/include -/testing/gtest/include/* -!/testing/gtest/include/gtest -/testing/gtest/include/gtest/* -!/testing/gtest/include/gtest/gtest_prod.h /third_party/* +!/third_party/antlr4 !/third_party/binutils -!/third_party/eu-strip !/third_party/inspector_protocol !/third_party/colorama /third_party/colorama/src +!/third_party/googletest +/third_party/googletest/src/* +!/third_party/googletest/src/googletest +/third_party/googletest/src/googletest/* +!/third_party/googletest/src/googletest/include +/third_party/googletest/src/googletest/include/* +!/third_party/googletest/src/googletest/include/gtest +/third_party/googletest/src/googletest/include/gtest/* +!/third_party/googletest/src/googletest/include/gtest/gtest_prod.h /tools/clang /tools/gcmole/gcmole-tools /tools/gcmole/gcmole-tools.tar.gz diff --git a/deps/v8/.gn b/deps/v8/.gn index c80980ea092d05..573fd030d80cf1 100644 --- a/deps/v8/.gn +++ b/deps/v8/.gn @@ -21,5 +21,4 @@ check_targets = [] # 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 # discouraged except for gypi_to_gn calls. -exec_script_whitelist = - build_dotfile_settings.exec_script_whitelist + [ "//test/test262/BUILD.gn" ] +exec_script_whitelist = build_dotfile_settings.exec_script_whitelist + [] diff --git a/deps/v8/.vpython b/deps/v8/.vpython index 9ea0da7145bb16..6a9ce3f693ef11 100644 --- a/deps/v8/.vpython +++ b/deps/v8/.vpython @@ -30,3 +30,16 @@ wheel: < name: "infra/python/wheels/psutil/${vpython_platform}" version: "version:5.2.2" > + +# Used by: +# build/toolchain/win +wheel: < + name: "infra/python/wheels/pypiwin32/${vpython_platform}" + version: "version:219" + match_tag: < + platform: "win32" + > + match_tag: < + platform: "win_amd64" + > +> diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS index 76a27ac1952ace..3251716f2a55f5 100644 --- a/deps/v8/AUTHORS +++ b/deps/v8/AUTHORS @@ -70,7 +70,6 @@ Felix Geisendörfer Filipe David Manana Franziska Hinkelmann Geoffrey Garside -Gus Caplan Gwang Yoon Hwang Henrique Ferreiro Hirofumi Mako @@ -99,6 +98,7 @@ Maciej Małecki Marcin Cieślak Marcin Wiącek Mateusz Czeladka +Matheus Marchini Mathias Bynens Matt Hanselman Matthew Sporleder @@ -138,6 +138,7 @@ Seo Sanghyeon Stefan Penner Sylvestre Ledru Taketoshi Aono +Teddy Katz Tiancheng "Timothy" Gu Tobias Burnus Victor Costan @@ -145,6 +146,7 @@ Vlad Burlik Vladimir Krivosheev Vladimir Shutoff Wiktor Garbacz +Xiaoyin Liu Yong Wang Yu Yin Zac Hansen diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn index 72a19b2ca450fa..4b48f7d6874df9 100644 --- a/deps/v8/BUILD.gn +++ b/deps/v8/BUILD.gn @@ -9,19 +9,23 @@ import("//build/config/host_byteorder.gni") import("//build/config/jumbo.gni") import("//build/config/mips.gni") import("//build/config/sanitizers/sanitizers.gni") +import("//build_overrides/build.gni") if (is_android) { import("//build/config/android/rules.gni") } import("gni/v8.gni") -import("gni/isolate.gni") import("snapshot_toolchain.gni") declare_args() { # Print to stdout on Android. v8_android_log_stdout = false + # Turns on all V8 debug features. Enables running V8 in a pseudo debug mode + # within a release Chrome. + v8_enable_debugging_features = is_debug + # Sets -DV8_ENABLE_FUTURE. v8_enable_future = false @@ -65,7 +69,8 @@ declare_args() { v8_enable_fast_mksnapshot = false # Enable embedded builtins. - # TODO(jgruber,v8:6666): Support ia32. + # TODO(jgruber,v8:6666): Support ia32 and maybe MSVC. + # TODO(jgruber,v8:6666): Re-enable after the M67 branch point. v8_enable_embedded_builtins = false # Enable code-generation-time checking of types in the CodeStubAssembler. @@ -142,29 +147,33 @@ declare_args() { # Enable mitigations for executing untrusted code. v8_untrusted_code_mitigations = true + + # Enable minor mark compact. + v8_enable_minor_mc = true } # Derived defaults. if (v8_enable_verify_heap == "") { - v8_enable_verify_heap = is_debug + v8_enable_verify_heap = v8_enable_debugging_features } if (v8_enable_object_print == "") { - v8_enable_object_print = is_debug + v8_enable_object_print = v8_enable_debugging_features } if (v8_enable_disassembler == "") { - v8_enable_disassembler = is_debug + v8_enable_disassembler = v8_enable_debugging_features } if (v8_enable_trace_maps == "") { - v8_enable_trace_maps = is_debug + v8_enable_trace_maps = v8_enable_debugging_features } if (v8_enable_test_features == "") { - v8_enable_test_features = is_debug || dcheck_always_on + v8_enable_test_features = v8_enable_debugging_features || dcheck_always_on } if (v8_enable_v8_checks == "") { - v8_enable_v8_checks = is_debug + v8_enable_v8_checks = v8_enable_debugging_features } if (v8_check_microtasks_scopes_consistency == "") { - v8_check_microtasks_scopes_consistency = is_debug || dcheck_always_on + v8_check_microtasks_scopes_consistency = + v8_enable_debugging_features || dcheck_always_on } # Specifies if the target build is a simulator build. Comparing target cpu @@ -268,6 +277,9 @@ config("features") { if (v8_enable_vtunejit) { defines += [ "ENABLE_VTUNE_JIT_INTERFACE" ] } + if (v8_enable_minor_mc) { + defines += [ "ENABLE_MINOR_MC" ] + } if (v8_enable_object_print) { defines += [ "OBJECT_PRINT" ] } @@ -326,6 +338,9 @@ config("features") { if (v8_enable_embedded_builtins) { defines += [ "V8_EMBEDDED_BUILTINS" ] } + if (v8_use_multi_snapshots) { + defines += [ "V8_MULTI_SNAPSHOTS" ] + } } config("toolchain") { @@ -497,7 +512,7 @@ config("toolchain") { # TODO(jochen): Support v8_enable_prof on Windows. # TODO(jochen): Add support for compiling with simulators. - if (is_debug) { + if (v8_enable_debugging_features) { if (is_linux && v8_enable_backtrace) { ldflags += [ "-rdynamic" ] } @@ -527,6 +542,8 @@ config("toolchain") { if (is_clang) { cflags += [ + "-Wmissing-field-initializers", + # TODO(hans): Remove once http://crbug.com/428099 is resolved. "-Winconsistent-missing-override", ] @@ -602,8 +619,6 @@ action("js2c") { "src/js/prologue.js", "src/js/array.js", "src/js/typedarray.js", - "src/js/messages.js", - "src/js/spread.js", "src/debug/mirrors.js", "src/debug/debug.js", "src/debug/liveedit.js", @@ -717,6 +732,8 @@ action("d8_js2c") { if (is_android && enable_java_templates) { android_assets("v8_external_startup_data_assets") { if (v8_use_external_startup_data) { + # We don't support side-by-side snapshots on Android within Chromium. + assert(!v8_use_multi_snapshots) deps = [ "//v8", ] @@ -756,6 +773,10 @@ if (v8_use_external_startup_data) { "$root_out_dir/natives_blob.bin", ] + data = [ + "$root_out_dir/natives_blob.bin", + ] + script = "tools/concatenate-files.py" args = rebase_path(sources + outputs, root_build_dir) @@ -786,6 +807,8 @@ action("postmortem-metadata") { "src/objects/js-array.h", "src/objects/js-regexp-inl.h", "src/objects/js-regexp.h", + "src/objects/js-regexp-string-iterator-inl.h", + "src/objects/js-regexp-string-iterator.h", "src/objects/map.h", "src/objects/map-inl.h", "src/objects/script.h", @@ -804,8 +827,24 @@ action("postmortem-metadata") { rebase_path(sources, root_build_dir) } -if (v8_use_snapshot) { - action("run_mksnapshot") { +# Template to generate different V8 snapshots based on different runtime flags. +# Can be invoked with run_mksnapshot(). The target will resolve to +# run_mksnapshot_. If is "default", no file suffixes will be used. +# Otherwise files are suffixed, e.g. embedded_.cc and +# snapshot_blob_.bin. +# +# The template exposes the variables: +# args: additional flags for mksnapshots +# embedded_suffix: a camel case suffix for method names in the embedded +# snapshot. +template("run_mksnapshot") { + name = target_name + if (name == "default") { + suffix = "" + } else { + suffix = "_$name" + } + action("run_mksnapshot_" + name) { visibility = [ ":*" ] # Only targets in this file can depend on this. deps = [ @@ -816,19 +855,33 @@ if (v8_use_snapshot) { sources = [] - outputs = [ - "$target_gen_dir/snapshot.cc", - ] + outputs = [] + + data = [] args = [ "./" + rebase_path(get_label_info(":mksnapshot($v8_snapshot_toolchain)", "root_out_dir") + "/mksnapshot", root_build_dir), "--turbo_instruction_scheduling", - "--startup_src", - rebase_path("$target_gen_dir/snapshot.cc", root_build_dir), ] + args += invoker.args + + if (v8_enable_embedded_builtins) { + outputs += [ "$target_gen_dir/embedded${suffix}.cc" ] + args += [ + "--embedded_src", + rebase_path("$target_gen_dir/embedded${suffix}.cc", root_build_dir), + ] + if (invoker.embedded_variant != "") { + args += [ + "--embedded_variant", + invoker.embedded_variant, + ] + } + } + if (v8_random_seed != "0") { args += [ "--random-seed", @@ -848,10 +901,17 @@ if (v8_use_snapshot) { } if (v8_use_external_startup_data) { - outputs += [ "$root_out_dir/snapshot_blob.bin" ] + outputs += [ "$root_out_dir/snapshot_blob${suffix}.bin" ] + data += [ "$root_out_dir/snapshot_blob${suffix}.bin" ] args += [ "--startup_blob", - rebase_path("$root_out_dir/snapshot_blob.bin", root_build_dir), + rebase_path("$root_out_dir/snapshot_blob${suffix}.bin", root_build_dir), + ] + } else { + outputs += [ "$target_gen_dir/snapshot${suffix}.cc" ] + args += [ + "--startup_src", + rebase_path("$target_gen_dir/snapshot${suffix}.cc", root_build_dir), ] } @@ -869,6 +929,23 @@ if (v8_use_snapshot) { } } +if (v8_use_snapshot) { + run_mksnapshot("default") { + args = [] + if (v8_enable_embedded_builtins) { + embedded_variant = "Default" + } + } + if (v8_use_multi_snapshots) { + run_mksnapshot("trusted") { + args = [ "--no-untrusted-code-mitigations" ] + if (v8_enable_embedded_builtins) { + embedded_variant = "Trusted" + } + } + } +} + action("v8_dump_build_config") { script = "tools/testrunner/utils/dump_build_config.py" outputs = [ @@ -882,7 +959,7 @@ action("v8_dump_build_config") { "is_asan=$is_asan", "is_cfi=$is_cfi", "is_component_build=$is_component_build", - "is_debug=$is_debug", + "is_debug=$v8_enable_debugging_features", "is_gcov_coverage=$is_gcov_coverage", "is_msan=$is_msan", "is_tsan=$is_tsan", @@ -940,12 +1017,13 @@ v8_source_set("v8_nosnapshot") { "$target_gen_dir/experimental-extras-libraries.cc", "$target_gen_dir/extras-libraries.cc", "$target_gen_dir/libraries.cc", + "src/snapshot/embedded-empty.cc", "src/snapshot/snapshot-empty.cc", ] if (use_jumbo_build == true) { jumbo_excluded_sources = [ - # TODO(mostynb@opera.com): don't exclude these http://crbug.com/752428 + # TODO(mostynb@vewd.com): don't exclude these http://crbug.com/752428 # Generated source, contains same variable names as libraries.cc "$target_gen_dir/experimental-extras-libraries.cc", "$target_gen_dir/libraries.cc", @@ -955,7 +1033,7 @@ v8_source_set("v8_nosnapshot") { configs = [ ":internal_config" ] } -if (v8_use_snapshot) { +if (v8_use_snapshot && !v8_use_external_startup_data) { v8_source_set("v8_snapshot") { # Only targets in this file and the top-level visibility target can # depend on this. @@ -973,7 +1051,7 @@ if (v8_use_snapshot) { public_deps = [ # This should be public so downstream targets can declare the snapshot # output file as their inputs. - ":run_mksnapshot", + ":run_mksnapshot_default", ] sources = [ @@ -984,9 +1062,13 @@ if (v8_use_snapshot) { "src/setup-isolate-deserialize.cc", ] + if (v8_enable_embedded_builtins) { + sources += [ "$target_gen_dir/embedded.cc" ] + } + if (use_jumbo_build == true) { jumbo_excluded_sources = [ - # TODO(mostynb@opera.com): don't exclude these http://crbug.com/752428 + # TODO(mostynb@vewd.com): don't exclude these http://crbug.com/752428 # Generated source, contains same variable names as libraries.cc "$target_gen_dir/experimental-extras-libraries.cc", "$target_gen_dir/libraries.cc", @@ -997,7 +1079,7 @@ if (v8_use_snapshot) { } } -if (v8_use_external_startup_data) { +if (v8_use_snapshot && v8_use_external_startup_data) { v8_source_set("v8_external_snapshot") { visibility = [ ":*" ] # Only targets in this file can depend on this. @@ -1009,15 +1091,34 @@ if (v8_use_external_startup_data) { ] public_deps = [ ":natives_blob", - ":run_mksnapshot", + ":run_mksnapshot_default", ] + if (v8_use_multi_snapshots) { + public_deps += [ ":run_mksnapshot_trusted" ] + } + sources = [ "src/setup-isolate-deserialize.cc", "src/snapshot/natives-external.cc", "src/snapshot/snapshot-external.cc", ] + if (v8_enable_embedded_builtins) { + sources += [ "$target_gen_dir/embedded.cc" ] + + if (v8_use_multi_snapshots) { + sources += [ "$target_gen_dir/embedded_trusted.cc" ] + + if (use_jumbo_build == true) { + jumbo_excluded_sources = [ + # Duplicated symbols with embedded.cc + "$target_gen_dir/embedded_trusted.cc", + ] + } + } + } + configs = [ ":internal_config" ] } } @@ -1105,7 +1206,7 @@ v8_source_set("v8_initializers") { if (use_jumbo_build == true) { jumbo_excluded_sources = [ - # TODO(mostynb@opera.com): don't exclude these http://crbug.com/752428 + # TODO(mostynb@vewd.com): don't exclude these http://crbug.com/752428 "src/builtins/builtins-async-iterator-gen.cc", "src/builtins/builtins-async-generator-gen.cc", @@ -1232,7 +1333,6 @@ v8_source_set("v8_base") { "src/allocation.cc", "src/allocation.h", "src/api-arguments-inl.h", - "src/api-arguments.cc", "src/api-arguments.h", "src/api-natives.cc", "src/api-natives.h", @@ -1350,8 +1450,6 @@ v8_source_set("v8_base") { "src/compilation-cache.h", "src/compilation-dependencies.cc", "src/compilation-dependencies.h", - "src/compilation-info.cc", - "src/compilation-info.h", "src/compilation-statistics.cc", "src/compilation-statistics.h", "src/compiler-dispatcher/compiler-dispatcher-job.cc", @@ -1634,9 +1732,8 @@ v8_source_set("v8_base") { "src/extensions/trigger-failure-extension.h", "src/external-reference-table.cc", "src/external-reference-table.h", - "src/factory-inl.h", - "src/factory.cc", - "src/factory.h", + "src/external-reference.cc", + "src/external-reference.h", "src/fast-dtoa.cc", "src/fast-dtoa.h", "src/feedback-vector-inl.h", @@ -1680,6 +1777,9 @@ v8_source_set("v8_base") { "src/heap/concurrent-marking.h", "src/heap/embedder-tracing.cc", "src/heap/embedder-tracing.h", + "src/heap/factory-inl.h", + "src/heap/factory.cc", + "src/heap/factory.h", "src/heap/gc-idle-time-handler.cc", "src/heap/gc-idle-time-handler.h", "src/heap/gc-tracer.cc", @@ -1866,12 +1966,16 @@ v8_source_set("v8_base") { "src/objects/js-promise-inl.h", "src/objects/js-promise.h", "src/objects/js-regexp-inl.h", + "src/objects/js-regexp-string-iterator-inl.h", + "src/objects/js-regexp-string-iterator.h", "src/objects/js-regexp.h", "src/objects/literal-objects-inl.h", "src/objects/literal-objects.cc", "src/objects/literal-objects.h", "src/objects/map-inl.h", "src/objects/map.h", + "src/objects/maybe-object-inl.h", + "src/objects/maybe-object.h", "src/objects/microtask-inl.h", "src/objects/microtask.h", "src/objects/module-inl.h", @@ -1897,6 +2001,8 @@ v8_source_set("v8_base") { "src/objects/string.h", "src/objects/template-objects.cc", "src/objects/template-objects.h", + "src/optimized-compilation-info.cc", + "src/optimized-compilation-info.h", "src/ostreams.cc", "src/ostreams.h", "src/parsing/duplicate-finder.h", @@ -2051,6 +2157,7 @@ v8_source_set("v8_base") { "src/snapshot/default-serializer-allocator.h", "src/snapshot/deserializer.cc", "src/snapshot/deserializer.h", + "src/snapshot/macros.h", "src/snapshot/natives-common.cc", "src/snapshot/natives.h", "src/snapshot/object-deserializer.cc", @@ -2113,6 +2220,8 @@ v8_source_set("v8_base") { "src/unicode-inl.h", "src/unicode.cc", "src/unicode.h", + "src/unoptimized-compilation-info.cc", + "src/unoptimized-compilation-info.h", "src/uri.cc", "src/uri.h", "src/utils-inl.h", @@ -2162,8 +2271,6 @@ v8_source_set("v8_base") { "src/wasm/wasm-code-manager.h", "src/wasm/wasm-code-specialization.cc", "src/wasm/wasm-code-specialization.h", - "src/wasm/wasm-code-wrapper.cc", - "src/wasm/wasm-code-wrapper.h", "src/wasm/wasm-constants.h", "src/wasm/wasm-debug.cc", "src/wasm/wasm-engine.cc", @@ -2196,7 +2303,6 @@ v8_source_set("v8_base") { "src/zone/accounting-allocator.cc", "src/zone/accounting-allocator.h", "src/zone/zone-allocator.h", - "src/zone/zone-allocator.h", "src/zone/zone-chunk-list.h", "src/zone/zone-containers.h", "src/zone/zone-handle-set.h", @@ -2209,7 +2315,7 @@ v8_source_set("v8_base") { if (use_jumbo_build == true) { jumbo_excluded_sources = [ - # TODO(mostynb@opera.com): don't exclude these http://crbug.com/752428 + # TODO(mostynb@vewd.com): don't exclude these http://crbug.com/752428 "src/profiler/heap-snapshot-generator.cc", # Macro clash in mman-linux.h # These source files take an unusually large amount of time to @@ -2364,7 +2470,7 @@ v8_source_set("v8_base") { ] if (use_jumbo_build) { jumbo_excluded_sources += [ - # TODO(mostynb@opera.com): fix this code so it doesn't need + # TODO(mostynb@vewd.com): fix this code so it doesn't need # to be excluded, see the comments inside. "src/arm64/instructions-arm64-constants.cc", ] @@ -2592,13 +2698,17 @@ v8_component("v8_libbase") { public_configs = [ ":libbase_config" ] + data = [] + + data_deps = [] + defines = [] if (is_component_build) { defines = [ "BUILDING_V8_BASE_SHARED" ] } - if (is_posix) { + if (is_posix || is_fuchsia) { sources += [ "src/base/platform/platform-posix.cc", "src/base/platform/platform-posix.h", @@ -2680,6 +2790,12 @@ v8_component("v8_libbase") { "winmm.lib", "ws2_32.lib", ] + + data_deps += [ "//build/win:runtime_libs" ] + } + + if (is_tsan && !build_with_chromium) { + data += [ "tools/sanitizers/tsan_suppressions.txt" ] } # TODO(jochen): Add support for qnx, freebsd, openbsd, netbsd, and solaris. @@ -2691,12 +2807,12 @@ v8_component("v8_libplatform") { "include/libplatform/libplatform-export.h", "include/libplatform/libplatform.h", "include/libplatform/v8-tracing.h", - "src/libplatform/default-background-task-runner.cc", - "src/libplatform/default-background-task-runner.h", "src/libplatform/default-foreground-task-runner.cc", "src/libplatform/default-foreground-task-runner.h", "src/libplatform/default-platform.cc", "src/libplatform/default-platform.h", + "src/libplatform/default-worker-threads-task-runner.cc", + "src/libplatform/default-worker-threads-task-runner.h", "src/libplatform/task-queue.cc", "src/libplatform/task-queue.h", "src/libplatform/tracing/trace-buffer.cc", @@ -2834,10 +2950,6 @@ group("gn_all") { if (want_v8_shell) { deps += [ ":v8_shell" ] } - - if (v8_test_isolation_mode != "noop") { - deps += [ ":d8_run" ] - } } group("v8_clusterfuzz") { @@ -2855,13 +2967,6 @@ group("v8_clusterfuzz") { ":d8(//build/toolchain/linux:clang_x86_v8_arm)", ] } - - if (v8_test_isolation_mode != "noop") { - deps += [ - "test:d8_default_run", - "tools:run-num-fuzzer_run", - ] - } } group("v8_archive") { @@ -2872,7 +2977,7 @@ group("v8_archive") { group("v8_fuzzers") { testonly = true - deps = [ + data_deps = [ ":v8_simple_json_fuzzer", ":v8_simple_multi_return_fuzzer", ":v8_simple_parser_fuzzer", @@ -2979,7 +3084,7 @@ v8_executable("d8") { "//build/win:default_exe_manifest", ] - if (is_posix) { + if (is_posix || is_fuchsia) { sources += [ "src/d8-posix.cc" ] } else if (is_win) { sources += [ "src/d8-windows.cc" ] @@ -2992,18 +3097,10 @@ v8_executable("d8") { defines = [] if (v8_enable_vtunejit) { - deps += [ "//src/third_party/vtune:v8_vtune" ] + deps += [ "src/third_party/vtune:v8_vtune" ] } } -v8_isolate_run("d8") { - deps = [ - ":d8", - ] - - isolate = "//src/d8.isolate" -} - v8_executable("v8_hello_world") { sources = [ "samples/hello-world.cc", diff --git a/deps/v8/ChangeLog b/deps/v8/ChangeLog index cfeeb0e08b6630..e6b825092c4a1d 100644 --- a/deps/v8/ChangeLog +++ b/deps/v8/ChangeLog @@ -1,3 +1,1493 @@ +2018-04-11: Version 6.7.288 + + Performance and stability improvements on all platforms. + + +2018-04-11: Version 6.7.287 + + Performance and stability improvements on all platforms. + + +2018-04-11: Version 6.7.286 + + Performance and stability improvements on all platforms. + + +2018-04-11: Version 6.7.285 + + Performance and stability improvements on all platforms. + + +2018-04-11: Version 6.7.284 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.283 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.282 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.281 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.280 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.279 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.278 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.277 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.276 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.275 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.274 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.273 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.272 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.271 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.270 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.269 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.268 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.267 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.266 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.265 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.264 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.263 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.262 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.261 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.260 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.259 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.258 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.257 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.256 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.255 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.254 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.253 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.252 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.251 + + Performance and stability improvements on all platforms. + + +2018-04-06: Version 6.7.250 + + Performance and stability improvements on all platforms. + + +2018-04-06: Version 6.7.249 + + Performance and stability improvements on all platforms. + + +2018-04-06: Version 6.7.248 + + Performance and stability improvements on all platforms. + + +2018-04-06: Version 6.7.247 + + Performance and stability improvements on all platforms. + + +2018-04-06: Version 6.7.246 + + Performance and stability improvements on all platforms. + + +2018-04-06: Version 6.7.245 + + Performance and stability improvements on all platforms. + + +2018-04-06: Version 6.7.244 + + Performance and stability improvements on all platforms. + + +2018-04-06: Version 6.7.243 + + Performance and stability improvements on all platforms. + + +2018-04-06: Version 6.7.242 + + Performance and stability improvements on all platforms. + + +2018-04-06: Version 6.7.241 + + Performance and stability improvements on all platforms. + + +2018-04-05: Version 6.7.240 + + Performance and stability improvements on all platforms. + + +2018-04-05: Version 6.7.239 + + Performance and stability improvements on all platforms. + + +2018-04-05: Version 6.7.238 + + Performance and stability improvements on all platforms. + + +2018-04-05: Version 6.7.237 + + Performance and stability improvements on all platforms. + + +2018-04-05: Version 6.7.236 + + Performance and stability improvements on all platforms. + + +2018-04-05: Version 6.7.235 + + Performance and stability improvements on all platforms. + + +2018-04-05: Version 6.7.234 + + Performance and stability improvements on all platforms. + + +2018-04-05: Version 6.7.233 + + Performance and stability improvements on all platforms. + + +2018-04-05: Version 6.7.232 + + Performance and stability improvements on all platforms. + + +2018-04-05: Version 6.7.231 + + Performance and stability improvements on all platforms. + + +2018-04-05: Version 6.7.230 + + Performance and stability improvements on all platforms. + + +2018-04-05: Version 6.7.229 + + Performance and stability improvements on all platforms. + + +2018-04-05: Version 6.7.228 + + Performance and stability improvements on all platforms. + + +2018-04-04: Version 6.7.227 + + Performance and stability improvements on all platforms. + + +2018-04-04: Version 6.7.226 + + Performance and stability improvements on all platforms. + + +2018-04-04: Version 6.7.225 + + Performance and stability improvements on all platforms. + + +2018-04-04: Version 6.7.224 + + Performance and stability improvements on all platforms. + + +2018-04-04: Version 6.7.223 + + Performance and stability improvements on all platforms. + + +2018-04-04: Version 6.7.222 + + Performance and stability improvements on all platforms. + + +2018-04-04: Version 6.7.221 + + Performance and stability improvements on all platforms. + + +2018-04-04: Version 6.7.220 + + Performance and stability improvements on all platforms. + + +2018-04-04: Version 6.7.219 + + Performance and stability improvements on all platforms. + + +2018-04-04: Version 6.7.218 + + Performance and stability improvements on all platforms. + + +2018-04-04: Version 6.7.217 + + Performance and stability improvements on all platforms. + + +2018-04-04: Version 6.7.216 + + Performance and stability improvements on all platforms. + + +2018-04-03: Version 6.7.215 + + Performance and stability improvements on all platforms. + + +2018-04-03: Version 6.7.214 + + Performance and stability improvements on all platforms. + + +2018-03-30: Version 6.7.213 + + Performance and stability improvements on all platforms. + + +2018-03-30: Version 6.7.212 + + Performance and stability improvements on all platforms. + + +2018-03-29: Version 6.7.211 + + Performance and stability improvements on all platforms. + + +2018-03-29: Version 6.7.210 + + Performance and stability improvements on all platforms. + + +2018-03-29: Version 6.7.209 + + Performance and stability improvements on all platforms. + + +2018-03-29: Version 6.7.208 + + Performance and stability improvements on all platforms. + + +2018-03-29: Version 6.7.207 + + Performance and stability improvements on all platforms. + + +2018-03-29: Version 6.7.206 + + Performance and stability improvements on all platforms. + + +2018-03-29: Version 6.7.205 + + Performance and stability improvements on all platforms. + + +2018-03-29: Version 6.7.204 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.203 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.202 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.201 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.200 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.199 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.198 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.197 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.196 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.195 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.194 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.193 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.192 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.191 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.190 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.189 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.188 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.187 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.186 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.185 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.184 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.183 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.182 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.181 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.180 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.179 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.178 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.177 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.176 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.175 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.174 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.173 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.172 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.171 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.170 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.169 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.168 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.167 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.166 + + Performance and stability improvements on all platforms. + + +2018-03-24: Version 6.7.165 + + Performance and stability improvements on all platforms. + + +2018-03-24: Version 6.7.164 + + Performance and stability improvements on all platforms. + + +2018-03-24: Version 6.7.163 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.162 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.161 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.160 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.159 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.158 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.157 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.156 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.155 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.154 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.153 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.152 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.151 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.150 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.149 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.148 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.147 + + Performance and stability improvements on all platforms. + + +2018-03-22: Version 6.7.146 + + Performance and stability improvements on all platforms. + + +2018-03-22: Version 6.7.145 + + Performance and stability improvements on all platforms. + + +2018-03-22: Version 6.7.144 + + Performance and stability improvements on all platforms. + + +2018-03-22: Version 6.7.143 + + Performance and stability improvements on all platforms. + + +2018-03-22: Version 6.7.142 + + Performance and stability improvements on all platforms. + + +2018-03-22: Version 6.7.141 + + Performance and stability improvements on all platforms. + + +2018-03-22: Version 6.7.140 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.139 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.138 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.137 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.136 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.135 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.134 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.133 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.132 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.131 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.130 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.129 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.128 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.127 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.126 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.125 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.124 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.123 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.122 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.121 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.120 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.119 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.118 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.117 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.116 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.115 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.114 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.113 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.112 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.111 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.110 + + Performance and stability improvements on all platforms. + + +2018-03-19: Version 6.7.109 + + Performance and stability improvements on all platforms. + + +2018-03-19: Version 6.7.108 + + Performance and stability improvements on all platforms. + + +2018-03-19: Version 6.7.107 + + Performance and stability improvements on all platforms. + + +2018-03-19: Version 6.7.106 + + Performance and stability improvements on all platforms. + + +2018-03-19: Version 6.7.105 + + Performance and stability improvements on all platforms. + + +2018-03-19: Version 6.7.104 + + Performance and stability improvements on all platforms. + + +2018-03-19: Version 6.7.103 + + Performance and stability improvements on all platforms. + + +2018-03-17: Version 6.7.102 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.101 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.100 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.99 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.98 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.97 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.96 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.95 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.94 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.93 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.92 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.91 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.90 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.89 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.88 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.87 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.86 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.85 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.84 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.83 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.82 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.81 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.80 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.79 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.78 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.77 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.76 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.75 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.74 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.73 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.72 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.71 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.70 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.69 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.68 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.67 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.66 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.65 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.64 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.63 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.62 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.61 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.60 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.59 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.58 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.57 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.56 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.55 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.54 + + Performance and stability improvements on all platforms. + + +2018-03-13: Version 6.7.53 + + Performance and stability improvements on all platforms. + + +2018-03-13: Version 6.7.52 + + Performance and stability improvements on all platforms. + + +2018-03-13: Version 6.7.51 + + Performance and stability improvements on all platforms. + + +2018-03-13: Version 6.7.50 + + Performance and stability improvements on all platforms. + + +2018-03-13: Version 6.7.49 + + Performance and stability improvements on all platforms. + + +2018-03-13: Version 6.7.48 + + Performance and stability improvements on all platforms. + + +2018-03-13: Version 6.7.47 + + Performance and stability improvements on all platforms. + + +2018-03-13: Version 6.7.46 + + Performance and stability improvements on all platforms. + + +2018-03-13: Version 6.7.45 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.44 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.43 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.42 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.41 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.40 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.39 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.38 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.37 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.36 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.35 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.34 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.33 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.32 + + Performance and stability improvements on all platforms. + + +2018-03-10: Version 6.7.31 + + Performance and stability improvements on all platforms. + + +2018-03-09: Version 6.7.30 + + Performance and stability improvements on all platforms. + + +2018-03-09: Version 6.7.29 + + Performance and stability improvements on all platforms. + + +2018-03-08: Version 6.7.28 + + Performance and stability improvements on all platforms. + + +2018-03-08: Version 6.7.27 + + Performance and stability improvements on all platforms. + + +2018-03-08: Version 6.7.26 + + Performance and stability improvements on all platforms. + + +2018-03-07: Version 6.7.25 + + Performance and stability improvements on all platforms. + + +2018-03-07: Version 6.7.24 + + Performance and stability improvements on all platforms. + + +2018-03-07: Version 6.7.23 + + Performance and stability improvements on all platforms. + + +2018-03-06: Version 6.7.22 + + Performance and stability improvements on all platforms. + + +2018-03-06: Version 6.7.21 + + Performance and stability improvements on all platforms. + + +2018-03-06: Version 6.7.20 + + Performance and stability improvements on all platforms. + + +2018-03-06: Version 6.7.19 + + Performance and stability improvements on all platforms. + + +2018-03-06: Version 6.7.18 + + Performance and stability improvements on all platforms. + + +2018-03-06: Version 6.7.17 + + Performance and stability improvements on all platforms. + + +2018-03-06: Version 6.7.16 + + Performance and stability improvements on all platforms. + + +2018-03-05: Version 6.7.15 + + Performance and stability improvements on all platforms. + + +2018-03-05: Version 6.7.14 + + Performance and stability improvements on all platforms. + + +2018-03-05: Version 6.7.13 + + Performance and stability improvements on all platforms. + + +2018-03-05: Version 6.7.12 + + Performance and stability improvements on all platforms. + + +2018-03-05: Version 6.7.11 + + Performance and stability improvements on all platforms. + + +2018-03-05: Version 6.7.10 + + Performance and stability improvements on all platforms. + + +2018-03-05: Version 6.7.9 + + Performance and stability improvements on all platforms. + + +2018-03-02: Version 6.7.8 + + Performance and stability improvements on all platforms. + + +2018-03-02: Version 6.7.7 + + Performance and stability improvements on all platforms. + + +2018-03-02: Version 6.7.6 + + Performance and stability improvements on all platforms. + + +2018-03-02: Version 6.7.5 + + Performance and stability improvements on all platforms. + + +2018-03-02: Version 6.7.4 + + Performance and stability improvements on all platforms. + + +2018-03-02: Version 6.7.3 + + Performance and stability improvements on all platforms. + + +2018-03-02: Version 6.7.2 + + Performance and stability improvements on all platforms. + + +2018-03-02: Version 6.7.1 + + Performance and stability improvements on all platforms. + + +2018-03-01: Version 6.6.356 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.355 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.354 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.353 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.352 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.351 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.350 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.349 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.348 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.347 + + Performance and stability improvements on all platforms. + + 2018-02-28: Version 6.6.346 Performance and stability improvements on all platforms. diff --git a/deps/v8/DEPS b/deps/v8/DEPS index 4c67868d52dac8..4a00478633793d 100644 --- a/deps/v8/DEPS +++ b/deps/v8/DEPS @@ -12,57 +12,55 @@ vars = { deps = { 'v8/build': - Var('chromium_url') + '/chromium/src/build.git' + '@' + 'b1d6c28b4a64128ad856d9da458afda2861fddab', + Var('chromium_url') + '/chromium/src/build.git' + '@' + '73e352e758d90603e23bdc84734c12aa5817ab5f', 'v8/tools/gyp': Var('chromium_url') + '/external/gyp.git' + '@' + 'd61a9397e668fa9843c4aa7da9e79460fe590bfb', 'v8/third_party/icu': Var('chromium_url') + '/chromium/deps/icu.git' + '@' + 'd888fd2a1be890f4d35e43f68d6d79f42519a357', 'v8/third_party/instrumented_libraries': - Var('chromium_url') + '/chromium/src/third_party/instrumented_libraries.git' + '@' + 'b745ddca2c63719167c0f2008ae19e667c5e9952', + Var('chromium_url') + '/chromium/src/third_party/instrumented_libraries.git' + '@' + '323cf32193caecbf074d1a0cb5b02b905f163e0f', 'v8/buildtools': - Var('chromium_url') + '/chromium/buildtools.git' + '@' + '2888931260f2a32bc583f005bd807a561b2fa6af', + Var('chromium_url') + '/chromium/buildtools.git' + '@' + 'e8aa02ea839e087f2db66100d02c3b5d47993852', 'v8/base/trace_event/common': - Var('chromium_url') + '/chromium/src/base/trace_event/common.git' + '@' + '0e9a47d74970bee1bbfc063c47215406f8918699', + Var('chromium_url') + '/chromium/src/base/trace_event/common.git' + '@' + '211b3ed9d0481b4caddbee1322321b86a483ca1f', 'v8/third_party/android_ndk': { - 'url': Var('chromium_url') + '/android_ndk.git' + '@' + 'e951c37287c7d8cd915bf8d4149fd4a06d808b55', + 'url': Var('chromium_url') + '/android_ndk.git' + '@' + '635bc380968a76f6948fee65f80a0b28db53ae81', 'condition': 'checkout_android', }, 'v8/third_party/android_tools': { - 'url': Var('chromium_url') + '/android_tools.git' + '@' + '9a70d48fcdd68cd0e7e968f342bd767ee6323bd1', + 'url': Var('chromium_url') + '/android_tools.git' + '@' + 'c22a664c39af72dd8f89200220713dcad811300a', 'condition': 'checkout_android', }, 'v8/third_party/catapult': { - 'url': Var('chromium_url') + '/catapult.git' + '@' + '8a42ad3cb185e340c32b20f657980fd057e3769f', + 'url': Var('chromium_url') + '/catapult.git' + '@' + '2c59f678c7ede8a844fb687525d594b71aabe3dd', 'condition': 'checkout_android', }, 'v8/third_party/colorama/src': { 'url': Var('chromium_url') + '/external/colorama.git' + '@' + '799604a1041e9b3bc5d2789ecbd7e8db2e18e6b8', 'condition': 'checkout_android', }, + 'v8/third_party/googletest/src': + Var('chromium_url') + '/external/github.com/google/googletest.git' + '@' + '7e5f90d3780d553cb86771141fb81349f3a63508', 'v8/third_party/jinja2': - Var('chromium_url') + '/chromium/src/third_party/jinja2.git' + '@' + 'd34383206fa42d52faa10bb9931d6d538f3a57e0', + Var('chromium_url') + '/chromium/src/third_party/jinja2.git' + '@' + '45571de473282bd1d8b63a8dfcb1fd268d0635d2', 'v8/third_party/markupsafe': Var('chromium_url') + '/chromium/src/third_party/markupsafe.git' + '@' + '8f45f5cfa0009d2a70589bcda0349b8cb2b72783', 'v8/tools/swarming_client': Var('chromium_url') + '/infra/luci/client-py.git' + '@' + '88229872dd17e71658fe96763feaa77915d8cbd6', - 'v8/testing/gtest': - Var('chromium_url') + '/external/github.com/google/googletest.git' + '@' + '6f8a66431cb592dad629028a50b3dd418a408c87', - 'v8/testing/gmock': - Var('chromium_url') + '/external/googlemock.git' + '@' + '0421b6f358139f02e102c9c332ce19a33faf75be', 'v8/test/benchmarks/data': Var('chromium_url') + '/v8/deps/third_party/benchmarks.git' + '@' + '05d7188267b4560491ff9155c5ee13e207ecd65f', 'v8/test/mozilla/data': Var('chromium_url') + '/v8/deps/third_party/mozilla-tests.git' + '@' + 'f6c578a10ea707b1a8ab0b88943fe5115ce2b9be', 'v8/test/test262/data': - Var('chromium_url') + '/external/github.com/tc39/test262.git' + '@' + 'b59d956b3c268abd0875aeb87d6688f4c7aafc9b', + Var('chromium_url') + '/external/github.com/tc39/test262.git' + '@' + '0192e0d70e2295fb590f14865da42f0f9dfa64bd', 'v8/test/test262/harness': Var('chromium_url') + '/external/github.com/test262-utils/test262-harness-py.git' + '@' + '0f2acdd882c84cff43b9d60df7574a1901e2cdcd', 'v8/tools/clang': - Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + 'b3d3f5920b161f95f1a8ffe08b75c695e0edf350', + Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + 'd7c36b0ae001a5cc31f2da79a430154916a3def2', 'v8/tools/luci-go': Var('chromium_url') + '/chromium/src/tools/luci-go.git' + '@' + 'ff0709d4283b1f233dcf0c9fec1672c6ecaed2f1', 'v8/test/wasm-js': - Var('chromium_url') + '/external/github.com/WebAssembly/spec.git' + '@' + '4653fc002a510b4f207af07f2c7c61b13dba78d9', + Var('chromium_url') + '/external/github.com/WebAssembly/spec.git' + '@' + '586d34770c6445bfb93c9bae8ac50baade7ee168', } recursedeps = [ @@ -255,28 +253,28 @@ hooks = [ { 'name': 'sysroot_arm', 'pattern': '.', - 'condition': 'checkout_linux and checkout_arm', + 'condition': '(checkout_linux and checkout_arm)', 'action': ['python', 'v8/build/linux/sysroot_scripts/install-sysroot.py', '--arch=arm'], }, { 'name': 'sysroot_arm64', 'pattern': '.', - 'condition': 'checkout_linux and checkout_arm64', + 'condition': '(checkout_linux and checkout_arm64)', 'action': ['python', 'v8/build/linux/sysroot_scripts/install-sysroot.py', '--arch=arm64'], }, { 'name': 'sysroot_x86', 'pattern': '.', - 'condition': 'checkout_linux and (checkout_x86 or checkout_x64)', + 'condition': '(checkout_linux and (checkout_x86 or checkout_x64))', 'action': ['python', 'v8/build/linux/sysroot_scripts/install-sysroot.py', '--arch=x86'], }, { 'name': 'sysroot_mips', 'pattern': '.', - 'condition': 'checkout_linux and checkout_mips', + 'condition': '(checkout_linux and checkout_mips)', 'action': ['python', 'v8/build/linux/sysroot_scripts/install-sysroot.py', '--arch=mips'], }, diff --git a/deps/v8/LICENSE b/deps/v8/LICENSE index 1ffa949c6c1dfb..a1e403f82bac6b 100644 --- a/deps/v8/LICENSE +++ b/deps/v8/LICENSE @@ -23,6 +23,9 @@ are: - Valgrind client API header, located at third_party/valgrind/valgrind.h This is release under the BSD license. + - antlr4 parser generator Cpp library located in third_party/antlr4 + This is release under the BSD license. + These libraries have their own licenses; we recommend you read them, as their terms may differ from the terms below. diff --git a/deps/v8/OWNERS b/deps/v8/OWNERS index d8e0fc60def3f7..f6726316f2af95 100644 --- a/deps/v8/OWNERS +++ b/deps/v8/OWNERS @@ -1,5 +1,6 @@ adamk@chromium.org ahaas@chromium.org +aseemgarg@chromium.org bbudge@chromium.org binji@chromium.org bmeurer@chromium.org @@ -18,6 +19,7 @@ ishell@chromium.org jarin@chromium.org jgruber@chromium.org jkummerow@chromium.org +kschimpf@chromium.org leszeks@chromium.org machenbach@chromium.org marja@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 51869ee9525614..e2a5ca0c8d491b 100644 --- a/deps/v8/base/trace_event/common/trace_event_common.h +++ b/deps/v8/base/trace_event/common/trace_event_common.h @@ -2,6 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#ifndef BASE_TRACE_EVENT_COMMON_TRACE_EVENT_COMMON_H_ +#define BASE_TRACE_EVENT_COMMON_TRACE_EVENT_COMMON_H_ + // This header file defines the set of trace_event macros without specifying // how the events actually get collected and stored. If you need to expose trace // events to some other universe, you can copy-and-paste this file as well as @@ -687,6 +690,11 @@ TRACE_EVENT_PHASE_ASYNC_END, category_group, name, id, \ TRACE_EVENT_API_CURRENT_THREAD_ID, timestamp, TRACE_EVENT_FLAG_NONE, \ arg1_name, arg1_val, arg2_name, arg2_val) +#define TRACE_EVENT_COPY_ASYNC_END_WITH_TIMESTAMP0(category_group, name, id, \ + timestamp) \ + INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP( \ + TRACE_EVENT_PHASE_ASYNC_END, category_group, name, id, \ + TRACE_EVENT_API_CURRENT_THREAD_ID, timestamp, TRACE_EVENT_FLAG_COPY) // NESTABLE_ASYNC_* APIs are used to describe an async operation, which can // be nested within a NESTABLE_ASYNC event and/or have inner NESTABLE_ASYNC @@ -1020,6 +1028,14 @@ } \ } while (0) +// Macro for getting the real base::TimeTicks::Now() which can be overridden in +// headless when VirtualTime is enabled. +#define TRACE_TIME_TICKS_NOW() INTERNAL_TRACE_TIME_TICKS_NOW() + +// Macro for getting the real base::Time::Now() which can be overridden in +// headless when VirtualTime is enabled. +#define TRACE_TIME_NOW() INTERNAL_TRACE_TIME_NOW() + // Notes regarding the following definitions: // New values can be added and propagated to third party libraries, but existing // definitions must never be changed, because third party libraries may use old @@ -1094,3 +1110,5 @@ #define TRACE_EVENT_SCOPE_NAME_GLOBAL ('g') #define TRACE_EVENT_SCOPE_NAME_PROCESS ('p') #define TRACE_EVENT_SCOPE_NAME_THREAD ('t') + +#endif // BASE_TRACE_EVENT_COMMON_TRACE_EVENT_COMMON_H_ diff --git a/deps/v8/gni/isolate.gni b/deps/v8/gni/isolate.gni deleted file mode 100644 index 6ad25c27749cc5..00000000000000 --- a/deps/v8/gni/isolate.gni +++ /dev/null @@ -1,196 +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. - -import("//build/config/sanitizers/sanitizers.gni") -import("//third_party/icu/config.gni") -import("v8.gni") - -declare_args() { - # Sets the test isolation mode (noop|prepare|check). - v8_test_isolation_mode = "noop" -} - -template("v8_isolate_run") { - forward_variables_from(invoker, - "*", - [ - "deps", - "isolate", - ]) - - # Remember target name as within the action scope the target name will be - # different. - name = target_name - - assert(defined(invoker.deps)) - assert(defined(invoker.isolate)) - - if (name != "" && v8_test_isolation_mode != "noop") { - action(name + "_run") { - testonly = true - - deps = invoker.deps - - script = "//tools/isolate_driver.py" - - sources = [ - invoker.isolate, - ] - - inputs = [ - # Files that are known to be involved in this step. - "//tools/swarming_client/isolate.py", - "//tools/swarming_client/run_isolated.py", - ] - - if (v8_test_isolation_mode == "prepare") { - outputs = [ - "$root_out_dir/$name.isolated.gen.json", - ] - } else if (v8_test_isolation_mode == "check") { - outputs = [ - "$root_out_dir/$name.isolated", - "$root_out_dir/$name.isolated.state", - ] - } - - # Translate gn to gyp variables. - if (v8_code_coverage) { - coverage = "1" - } else { - coverage = "0" - } - if (is_asan) { - asan = "1" - } else { - asan = "0" - } - if (is_msan) { - msan = "1" - } else { - msan = "0" - } - if (is_tsan) { - tsan = "1" - } else { - tsan = "0" - } - if (is_cfi) { - cfi_vptr = "1" - } else { - cfi_vptr = "0" - } - if (target_cpu == "x86") { - target_arch = "ia32" - } else { - target_arch = target_cpu - } - if (is_debug) { - configuration_name = "Debug" - } else { - configuration_name = "Release" - } - if (is_component_build) { - component = "shared_library" - } else { - component = "static_library" - } - if (icu_use_data_file) { - icu_use_data_file_flag = "1" - } else { - icu_use_data_file_flag = "0" - } - if (v8_use_external_startup_data) { - use_external_startup_data = "1" - } else { - use_external_startup_data = "0" - } - if (is_ubsan_vptr) { - ubsan_vptr = "1" - } else { - ubsan_vptr = "0" - } - if (v8_use_snapshot) { - use_snapshot = "true" - } else { - use_snapshot = "false" - } - if (v8_has_valgrind) { - has_valgrind = "1" - } else { - has_valgrind = "0" - } - if (v8_gcmole) { - gcmole = "1" - } else { - gcmole = "0" - } - - # Note, all paths will be rebased in isolate_driver.py to be relative to - # the isolate file. - args = [ - v8_test_isolation_mode, - "--isolated", - rebase_path("$root_out_dir/$name.isolated", root_build_dir), - "--isolate", - rebase_path(invoker.isolate, root_build_dir), - - # Path variables are used to replace file paths when loading a .isolate - # file - "--path-variable", - "DEPTH", - rebase_path("//", root_build_dir), - "--path-variable", - "PRODUCT_DIR", - rebase_path(root_out_dir, root_build_dir), - - # TODO(machenbach): Set variables for remaining features. - "--config-variable", - "CONFIGURATION_NAME=$configuration_name", - "--config-variable", - "OS=$target_os", - "--config-variable", - "asan=$asan", - "--config-variable", - "cfi_vptr=$cfi_vptr", - "--config-variable", - "gcmole=$gcmole", - "--config-variable", - "has_valgrind=$has_valgrind", - "--config-variable", - "icu_use_data_file_flag=$icu_use_data_file_flag", - "--config-variable", - "msan=$msan", - "--config-variable", - "tsan=$tsan", - "--config-variable", - "coverage=$coverage", - "--config-variable", - "sanitizer_coverage=$sanitizer_coverage_flags", - "--config-variable", - "component=$component", - "--config-variable", - "target_arch=$target_arch", - "--config-variable", - "ubsan_vptr=$ubsan_vptr", - "--config-variable", - "v8_use_external_startup_data=$use_external_startup_data", - "--config-variable", - "v8_use_snapshot=$use_snapshot", - ] - - if (is_win) { - args += [ - "--config-variable", - "msvs_version=2017", - ] - } else { - args += [ - "--config-variable", - "msvs_version=0", - ] - } - } - } -} diff --git a/deps/v8/gni/msvs_dependencies.isolate b/deps/v8/gni/msvs_dependencies.isolate deleted file mode 100644 index 285912665916e8..00000000000000 --- a/deps/v8/gni/msvs_dependencies.isolate +++ /dev/null @@ -1,97 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -# TODO(machenbach): Remove this when crbug.com/669910 is resolved. -{ - 'conditions': [ - # Copy the VS runtime DLLs into the isolate so that they - # don't have to be preinstalled on the target machine. - # - # VS2013 runtimes - ['OS=="win" and msvs_version==2013 and component=="shared_library" and (CONFIGURATION_NAME=="Debug" or CONFIGURATION_NAME=="Debug_x64")', { - 'variables': { - 'files': [ - '<(PRODUCT_DIR)/msvcp120d.dll', - '<(PRODUCT_DIR)/msvcr120d.dll', - ], - }, - }], - ['OS=="win" and msvs_version==2013 and component=="shared_library" and (CONFIGURATION_NAME=="Release" or CONFIGURATION_NAME=="Release_x64")', { - 'variables': { - 'files': [ - '<(PRODUCT_DIR)/msvcp120.dll', - '<(PRODUCT_DIR)/msvcr120.dll', - ], - }, - }], - # VS2015/2017 runtimes - ['OS=="win" and (msvs_version==2015 or msvs_version==2017) and component=="shared_library" and (CONFIGURATION_NAME=="Debug" or CONFIGURATION_NAME=="Debug_x64")', { - 'variables': { - 'files': [ - '<(PRODUCT_DIR)/msvcp140d.dll', - '<(PRODUCT_DIR)/vccorlib140d.dll', - '<(PRODUCT_DIR)/vcruntime140d.dll', - '<(PRODUCT_DIR)/ucrtbased.dll', - ], - }, - }], - ['OS=="win" and (msvs_version==2015 or msvs_version==2017) and component=="shared_library" and (CONFIGURATION_NAME=="Release" or CONFIGURATION_NAME=="Release_x64")', { - 'variables': { - 'files': [ - '<(PRODUCT_DIR)/msvcp140.dll', - '<(PRODUCT_DIR)/vccorlib140.dll', - '<(PRODUCT_DIR)/vcruntime140.dll', - '<(PRODUCT_DIR)/ucrtbase.dll', - ], - }, - }], - ['OS=="win" and (msvs_version==2015 or msvs_version==2017) and component=="shared_library"', { - # Windows 10 Universal C Runtime binaries. - 'variables': { - 'files': [ - '<(PRODUCT_DIR)/api-ms-win-core-console-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-datetime-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-debug-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-errorhandling-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-file-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-file-l1-2-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-file-l2-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-handle-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-heap-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-interlocked-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-libraryloader-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-localization-l1-2-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-memory-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-namedpipe-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-processenvironment-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-processthreads-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-processthreads-l1-1-1.dll', - '<(PRODUCT_DIR)/api-ms-win-core-profile-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-rtlsupport-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-string-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-synch-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-synch-l1-2-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-sysinfo-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-timezone-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-util-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-conio-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-convert-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-environment-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-filesystem-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-heap-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-locale-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-math-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-multibyte-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-private-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-process-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-runtime-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-stdio-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-string-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-time-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-utility-l1-1-0.dll', - ], - }, - }], - ], -} diff --git a/deps/v8/gni/v8.gni b/deps/v8/gni/v8.gni index 16a124dce85471..211f15aab944d4 100644 --- a/deps/v8/gni/v8.gni +++ b/deps/v8/gni/v8.gni @@ -37,6 +37,9 @@ declare_args() { # https://803591 v8_use_snapshot = !(is_win && host_os != "win" && target_cpu == "x64") + # Enable several snapshots side-by-side (e.g. default and for trusted code). + v8_use_multi_snapshots = "" + # Use external files for startup data blobs: # the JS builtins sources and the start snapshot. v8_use_external_startup_data = "" @@ -58,6 +61,11 @@ if (v8_use_external_startup_data == "") { v8_use_external_startup_data = v8_use_snapshot && !is_ios } +if (v8_use_multi_snapshots == "") { + v8_use_multi_snapshots = + v8_use_external_startup_data && !build_with_chromium && !use_jumbo_build +} + if (v8_enable_backtrace == "") { v8_enable_backtrace = is_debug && !v8_optimized_debug } @@ -113,6 +121,10 @@ if (target_cpu == "mipsel" || target_cpu == "mips64el" || v8_add_configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ] } +if (!build_with_chromium && is_clang) { + v8_remove_configs += [ "//build/config/clang:find_bad_constructs" ] +} + # All templates should be kept in sync. template("v8_source_set") { if (defined(invoker.split_count) && invoker.split_count > 1 && @@ -192,6 +204,7 @@ template("v8_static_library") { forward_variables_from(invoker, "*", [ "configs" ]) configs += invoker.configs configs -= v8_remove_configs + configs -= [ "//build/config/compiler:thin_archive" ] configs += v8_add_configs } } diff --git a/deps/v8/include/OWNERS b/deps/v8/include/OWNERS index 28f038f80b2112..a7ac912c0ab4a9 100644 --- a/deps/v8/include/OWNERS +++ b/deps/v8/include/OWNERS @@ -1,5 +1,9 @@ +set noparent + adamk@chromium.org danno@chromium.org +ulan@chromium.org +yangguo@chromium.org per-file v8-inspector.h=dgozman@chromium.org per-file v8-inspector.h=pfeldman@chromium.org diff --git a/deps/v8/include/libplatform/libplatform.h b/deps/v8/include/libplatform/libplatform.h index b5f2b77711166f..2c830bf834b786 100644 --- a/deps/v8/include/libplatform/libplatform.h +++ b/deps/v8/include/libplatform/libplatform.h @@ -62,8 +62,10 @@ V8_PLATFORM_EXPORT bool PumpMessageLoop( v8::Platform* platform, v8::Isolate* isolate, MessageLoopBehavior behavior = MessageLoopBehavior::kDoNotWait); -V8_PLATFORM_EXPORT void EnsureEventLoopInitialized(v8::Platform* platform, - v8::Isolate* isolate); +V8_PLATFORM_EXPORT V8_DEPRECATE_SOON( + "This function has become obsolete and is essentially a nop", + void EnsureEventLoopInitialized(v8::Platform* platform, + v8::Isolate* isolate)); /** * Runs pending idle tasks for at most |idle_time_in_seconds| seconds. diff --git a/deps/v8/include/libplatform/v8-tracing.h b/deps/v8/include/libplatform/v8-tracing.h index e430e7c3502741..9dcf3d7bca760a 100644 --- a/deps/v8/include/libplatform/v8-tracing.h +++ b/deps/v8/include/libplatform/v8-tracing.h @@ -112,8 +112,6 @@ class V8_PLATFORM_EXPORT TraceWriter { virtual void Flush() = 0; static TraceWriter* CreateJSONTraceWriter(std::ostream& stream); - static TraceWriter* CreateJSONTraceWriter(std::ostream& stream, - const std::string& tag); private: // Disallow copy and assign diff --git a/deps/v8/include/v8-platform.h b/deps/v8/include/v8-platform.h index 62b3af84a0f717..ddc200abab0dd9 100644 --- a/deps/v8/include/v8-platform.h +++ b/deps/v8/include/v8-platform.h @@ -5,9 +5,9 @@ #ifndef V8_V8_PLATFORM_H_ #define V8_V8_PLATFORM_H_ -#include #include #include +#include // For abort. #include #include @@ -288,16 +288,21 @@ class Platform { */ virtual bool OnCriticalMemoryPressure(size_t length) { return false; } + /** + * Gets the number of worker threads used by GetWorkerThreadsTaskRunner() and + * CallOnWorkerThread(). This can be used to estimate the number of tasks a + * work package should be split into. A return value of 0 means that there are + * no worker threads available. Note that a value of 0 won't prohibit V8 from + * posting tasks using |CallOnWorkerThread|. + */ virtual int NumberOfWorkerThreads() { return static_cast(NumberOfAvailableBackgroundThreads()); } /** - * Gets the number of threads that are used to execute background tasks. Is - * used to estimate the number of tasks a work package should be split into. - * A return value of 0 means that there are no background threads available. - * Note that a value of 0 won't prohibit V8 from posting tasks using - * |CallOnBackgroundThread|. + * Deprecated. Use NumberOfWorkerThreads() instead. + * TODO(gab): Remove this when all embedders override + * NumberOfWorkerThreads() instead. */ V8_DEPRECATE_SOON( "NumberOfAvailableBackgroundThreads() is deprecated, use " @@ -340,8 +345,14 @@ class Platform { abort(); } + /** + * Returns a TaskRunner which can be used to post async tasks on a worker. + * This function should only be called from a foreground thread. + */ virtual std::shared_ptr GetWorkerThreadsTaskRunner( Isolate* isolate) { + // TODO(gab): Make this function abstract after it got implemented on all + // platforms. return GetBackgroundTaskRunner(isolate); } @@ -365,10 +376,19 @@ class Platform { abort(); } + /** + * Schedules a task to be invoked on a worker thread. + * TODO(gab): Make pure virtual when all embedders override this instead of + * CallOnBackgroundThread(). + */ virtual void CallOnWorkerThread(std::unique_ptr task) { CallOnBackgroundThread(task.release(), kShortRunningTask); } + /** + * Schedules a task that blocks the main thread to be invoked with + * high-priority on a worker thread. + */ virtual void CallBlockingTaskOnWorkerThread(std::unique_ptr task) { // Embedders may optionally override this to process these tasks in a high // priority pool. diff --git a/deps/v8/include/v8-profiler.h b/deps/v8/include/v8-profiler.h index 50c531559ec663..afa40d25f30fdc 100644 --- a/deps/v8/include/v8-profiler.h +++ b/deps/v8/include/v8-profiler.h @@ -335,7 +335,8 @@ class V8_EXPORT CpuProfiler { /** * Tells the profiler whether the embedder is idle. */ - void SetIdle(bool is_idle); + V8_DEPRECATED("Use Isolate::SetIdle(bool) instead.", + void SetIdle(bool is_idle)); private: CpuProfiler(); @@ -401,7 +402,8 @@ class V8_EXPORT HeapGraphNode { // snapshot items together. kConsString = 10, // Concatenated string. A pair of pointers to strings. kSlicedString = 11, // Sliced string. A fragment of another string. - kSymbol = 12 // A Symbol (ES6). + kSymbol = 12, // A Symbol (ES6). + kBigInt = 13 // BigInt. }; /** Returns node type (see HeapGraphNode::Type). */ @@ -875,11 +877,15 @@ class V8_EXPORT HeapProfiler { void DeleteAllHeapSnapshots(); /** Binds a callback to embedder's class ID. */ - void SetWrapperClassInfoProvider( - uint16_t class_id, - WrapperInfoCallback callback); + V8_DEPRECATED( + "Use SetBuildEmbedderGraphCallback to provide info about embedder nodes", + void SetWrapperClassInfoProvider(uint16_t class_id, + WrapperInfoCallback callback)); + + V8_DEPRECATED( + "Use SetBuildEmbedderGraphCallback to provide info about embedder nodes", + void SetGetRetainerInfosCallback(GetRetainerInfosCallback callback)); - void SetGetRetainerInfosCallback(GetRetainerInfosCallback callback); void SetBuildEmbedderGraphCallback(BuildEmbedderGraphCallback callback); /** diff --git a/deps/v8/include/v8-version.h b/deps/v8/include/v8-version.h index cdb2c5381e3c85..f871c8fa676968 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 6 -#define V8_MINOR_VERSION 6 -#define V8_BUILD_NUMBER 346 -#define V8_PATCH_LEVEL 32 +#define V8_MINOR_VERSION 7 +#define V8_BUILD_NUMBER 288 +#define V8_PATCH_LEVEL 43 // 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 31407fa0839bb9..d520c866042a7a 100644 --- a/deps/v8/include/v8.h +++ b/deps/v8/include/v8.h @@ -66,6 +66,8 @@ namespace v8 { class AccessorSignature; class Array; class ArrayBuffer; +class BigInt; +class BigIntObject; class Boolean; class BooleanObject; class Context; @@ -1579,6 +1581,15 @@ class V8_EXPORT ScriptCompiler { static CachedData* CreateCodeCache(Local unbound_script, Local source); + /** + * Creates and returns code cache for the specified function that was + * previously produced by CompileFunctionInContext. + * This will return nullptr if the script cannot be serialized. The + * CachedData returned by this function should be owned by the caller. + */ + static CachedData* CreateCodeCacheForFunction(Local function, + Local source); + private: static V8_WARN_UNUSED_RESULT MaybeLocal CompileUnboundInternal( Isolate* isolate, Source* source, CompileOptions options, @@ -1650,6 +1661,7 @@ class V8_EXPORT Message { * Returns the index within the line of the last character where * the error occurred. */ + int GetEndColumn() const; V8_WARN_UNUSED_RESULT Maybe GetEndColumn(Local context) const; /** @@ -2153,6 +2165,11 @@ class V8_EXPORT Value : public Data { */ bool IsObject() const; + /** + * Returns true if this value is a bigint. + */ + bool IsBigInt() const; + /** * Returns true if this value is boolean. */ @@ -2188,6 +2205,11 @@ class V8_EXPORT Value : public Data { */ bool IsArgumentsObject() const; + /** + * Returns true if this value is a BigInt object. + */ + bool IsBigIntObject() const; + /** * Returns true if this value is a Boolean object. */ @@ -2356,11 +2378,8 @@ class V8_EXPORT Value : public Data { bool IsWebAssemblyCompiledModule() const; - /** - * Returns true if the value is a Module Namespace Object. - */ - bool IsModuleNamespaceObject() const; - + V8_WARN_UNUSED_RESULT MaybeLocal ToBigInt( + Local context) const; V8_WARN_UNUSED_RESULT MaybeLocal ToBoolean( Local context) const; V8_WARN_UNUSED_RESULT MaybeLocal ToNumber( @@ -3012,6 +3031,19 @@ class V8_EXPORT Uint32 : public Integer { static void CheckCast(v8::Value* obj); }; +/** + * A JavaScript BigInt value (https://tc39.github.io/proposal-bigint) + */ +class V8_EXPORT BigInt : public Primitive { + public: + static Local New(Isolate* isolate, int64_t value); + V8_INLINE static BigInt* Cast(v8::Value* obj); + + private: + BigInt(); + static void CheckCast(v8::Value* obj); +}; + /** * PropertyAttribute. */ @@ -3077,6 +3109,13 @@ enum PropertyFilter { SKIP_SYMBOLS = 16 }; +/** + * Options for marking whether callbacks may trigger JS-observable side effects. + * Side-effect-free callbacks are whitelisted during debug evaluation with + * throwOnSideEffect. It applies when calling a Function, FunctionTemplate, + * or an Accessor's getter callback. For Interceptors, please see + * PropertyHandlerFlags's kHasNoSideEffect. + */ enum class SideEffectType { kHasSideEffect, kHasNoSideEffect }; /** @@ -3090,7 +3129,7 @@ enum class KeyCollectionMode { kOwnOnly, kIncludePrototypes }; /** * kIncludesIndices allows for integer indices to be collected, while - * kSkipIndices will exclude integer indicies from being collected. + * kSkipIndices will exclude integer indices from being collected. */ enum class IndexFilter { kIncludeIndices, kSkipIndices }; @@ -3205,12 +3244,14 @@ class V8_EXPORT Object : public Value { V8_WARN_UNUSED_RESULT Maybe Delete(Local context, Local key); - V8_WARN_UNUSED_RESULT Maybe Has(Local context, - uint32_t index); + V8_WARN_UNUSED_RESULT Maybe Has(Local context, uint32_t index); V8_WARN_UNUSED_RESULT Maybe Delete(Local context, uint32_t index); + /** + * Note: SideEffectType affects the getter only, not the setter. + */ V8_WARN_UNUSED_RESULT Maybe SetAccessor( Local context, Local name, AccessorNameGetterCallback getter, AccessorNameSetterCallback setter = 0, @@ -3503,17 +3544,6 @@ class V8_EXPORT Object : public Value { */ Isolate* GetIsolate(); - /** - * If this object is a Set, Map, WeakSet or WeakMap, this returns a - * representation of the elements of this object as an array. - * If this object is a SetIterator or MapIterator, this returns all - * elements of the underlying collection, starting at the iterator's current - * position. - * For other types, this will return an empty MaybeLocal (without - * scheduling an exception). - */ - MaybeLocal PreviewEntries(bool* is_key_value); - static Local New(Isolate* isolate); V8_INLINE static Object* Cast(Value* obj); @@ -4294,6 +4324,11 @@ class V8_EXPORT ArrayBuffer : public Object { */ virtual void Free(void* data, size_t length) = 0; + /** + * ArrayBuffer allocation mode. kNormal is a malloc/free style allocation, + * while kReservation is for larger allocations with the ability to set + * access permissions. + */ enum class AllocationMode { kNormal, kReservation }; /** @@ -4868,6 +4903,20 @@ class V8_EXPORT NumberObject : public Object { static void CheckCast(Value* obj); }; +/** + * A BigInt object (https://tc39.github.io/proposal-bigint) + */ +class V8_EXPORT BigIntObject : public Object { + public: + static Local New(Isolate* isolate, int64_t value); + + Local ValueOf() const; + + V8_INLINE static BigIntObject* Cast(Value* obj); + + private: + static void CheckCast(Value* obj); +}; /** * A Boolean object (ECMA-262, 4.3.15). @@ -5532,7 +5581,7 @@ class V8_EXPORT FunctionTemplate : public Template { /** * Causes the function template to inherit from a parent function template. - * This means the the function's prototype.__proto__ is set to the parent + * This means the function's prototype.__proto__ is set to the parent * function's prototype. **/ void Inherit(Local parent); @@ -5633,6 +5682,11 @@ enum class PropertyHandlerFlags { * named interceptors. */ kOnlyInterceptStrings = 1 << 2, + + /** + * The getter, query, enumerator callbacks do not produce side effects. + */ + kHasNoSideEffect = 1 << 3, }; struct NamedPropertyHandlerConfiguration { @@ -6209,24 +6263,6 @@ typedef void* (*CreateHistogramCallback)(const char* name, typedef void (*AddHistogramSampleCallback)(void* histogram, int sample); -// --- Memory Allocation Callback --- -enum ObjectSpace { - kObjectSpaceNewSpace = 1 << 0, - kObjectSpaceOldSpace = 1 << 1, - kObjectSpaceCodeSpace = 1 << 2, - kObjectSpaceMapSpace = 1 << 3, - kObjectSpaceLoSpace = 1 << 4, - kObjectSpaceAll = kObjectSpaceNewSpace | kObjectSpaceOldSpace | - kObjectSpaceCodeSpace | kObjectSpaceMapSpace | - kObjectSpaceLoSpace -}; - - enum AllocationAction { - kAllocationActionAllocate = 1 << 0, - kAllocationActionFree = 1 << 1, - kAllocationActionAll = kAllocationActionAllocate | kAllocationActionFree - }; - // --- Enter/Leave Script Callback --- typedef void (*BeforeCallEnteredCallback)(Isolate*); typedef void (*CallCompletedCallback)(Isolate*); @@ -6445,6 +6481,15 @@ typedef void (*GCCallback)(GCType type, GCCallbackFlags flags); typedef void (*InterruptCallback)(Isolate* isolate, void* data); +/** + * This callback is invoked when the heap size is close to the heap limit and + * V8 is likely to abort with out-of-memory error. + * The callback can extend the heap limit by returning a value that is greater + * than the current_heap_limit. The initial heap limit is the limit that was + * set after heap setup. + */ +typedef size_t (*NearHeapLimitCallback)(void* data, size_t current_heap_limit, + size_t initial_heap_limit); /** * Collection of V8 heap information. @@ -6578,6 +6623,12 @@ struct JitCodeEvent { // statement, and is used to indicate possible break locations. enum PositionType { POSITION, STATEMENT_POSITION }; + // There are two different kinds of JitCodeEvents, one for JIT code generated + // by the optimizing compiler, and one for byte code generated for the + // interpreter. For JIT_CODE events, the |code_start| member of the event + // points to the beginning of jitted assembly code, while for BYTE_CODE + // events, |code_start| points to the first bytecode of the interpreted + // function. enum CodeType { BYTE_CODE, JIT_CODE }; // Type of event. @@ -7281,6 +7332,11 @@ class V8_EXPORT Isolate { V8_DEPRECATED("CpuProfiler should be created with CpuProfiler::New call.", CpuProfiler* GetCpuProfiler()); + /** + * Tells the CPU profiler whether the embedder is idle. + */ + void SetIdle(bool is_idle); + /** Returns true if this isolate has a current context. */ bool InContext(); @@ -7692,6 +7748,23 @@ class V8_EXPORT Isolate { /** Set the callback to invoke in case of OOM errors. */ void SetOOMErrorHandler(OOMErrorCallback that); + /** + * Add a callback to invoke in case the heap size is close to the heap limit. + * If multiple callbacks are added, only the most recently added callback is + * invoked. + */ + void AddNearHeapLimitCallback(NearHeapLimitCallback callback, void* data); + + /** + * Remove the given callback and restore the heap limit to the + * given limit. If the given limit is zero, then it is ignored. + * If the current heap size is greater than the given limit, + * then the heap limit is restored to the minimal limit that + * is possible for the current heap size. + */ + void RemoveNearHeapLimitCallback(NearHeapLimitCallback callback, + size_t heap_limit); + /** * Set the callback to invoke to check if code generation from * strings should be allowed. @@ -7947,6 +8020,15 @@ class V8_EXPORT V8 { */ static bool Dispose(); + /** + * Initialize the ICU library bundled with V8. The embedder should only + * invoke this method when using the bundled ICU. Returns true on success. + * + * If V8 was compiled with the ICU data in an external file, the location + * of the data file has to be provided. + */ + static bool InitializeICU(const char* icu_data_file = nullptr); + /** * Initialize the ICU library bundled with V8. The embedder should only * invoke this method when using the bundled ICU. If V8 was compiled with @@ -8023,6 +8105,14 @@ class V8_EXPORT V8 { V8_DEPRECATE_SOON("Use EnableWebAssemblyTrapHandler", static bool RegisterDefaultSignalHandler()); + /** + * Activate trap-based bounds checking for WebAssembly. + * + * \param use_v8_signal_handler Whether V8 should install its own signal + * handler or rely on the embedder's. + */ + static bool EnableWebAssemblyTrapHandler(bool use_v8_signal_handler); + private: V8(); @@ -8580,6 +8670,11 @@ class V8_EXPORT Context { */ enum EmbedderDataFields { kDebugIdIndex = 0 }; + /** + * Return the number of fields allocated for embedder data. + */ + uint32_t GetNumberOfEmbedderDataFields(); + /** * Gets the embedder data with the given index, which must have been set by a * previous call to SetEmbedderData with the same index. @@ -8835,6 +8930,7 @@ const int kApiInt64Size = sizeof(int64_t); // NOLINT // Tag information for HeapObject. const int kHeapObjectTag = 1; +const int kWeakHeapObjectTag = 3; const int kHeapObjectTagSize = 2; const intptr_t kHeapObjectTagMask = (1 << kHeapObjectTagSize) - 1; @@ -9849,6 +9945,12 @@ Uint32* Uint32::Cast(v8::Value* value) { return static_cast(value); } +BigInt* BigInt::Cast(v8::Value* value) { +#ifdef V8_ENABLE_CHECKS + CheckCast(value); +#endif + return static_cast(value); +} Date* Date::Cast(v8::Value* value) { #ifdef V8_ENABLE_CHECKS @@ -9881,6 +9983,12 @@ NumberObject* NumberObject::Cast(v8::Value* value) { return static_cast(value); } +BigIntObject* BigIntObject::Cast(v8::Value* value) { +#ifdef V8_ENABLE_CHECKS + CheckCast(value); +#endif + return static_cast(value); +} BooleanObject* BooleanObject::Cast(v8::Value* value) { #ifdef V8_ENABLE_CHECKS @@ -10047,6 +10155,19 @@ Float64Array* Float64Array::Cast(v8::Value* value) { return static_cast(value); } +BigInt64Array* BigInt64Array::Cast(v8::Value* value) { +#ifdef V8_ENABLE_CHECKS + CheckCast(value); +#endif + return static_cast(value); +} + +BigUint64Array* BigUint64Array::Cast(v8::Value* value) { +#ifdef V8_ENABLE_CHECKS + CheckCast(value); +#endif + return static_cast(value); +} Uint8ClampedArray* Uint8ClampedArray::Cast(v8::Value* value) { #ifdef V8_ENABLE_CHECKS diff --git a/deps/v8/include/v8config.h b/deps/v8/include/v8config.h index 69cf3b78c8b2c8..d8e1f36c128d1e 100644 --- a/deps/v8/include/v8config.h +++ b/deps/v8/include/v8config.h @@ -177,6 +177,9 @@ // V8_HAS_ATTRIBUTE_VISIBILITY - __attribute__((visibility)) supported // V8_HAS_ATTRIBUTE_WARN_UNUSED_RESULT - __attribute__((warn_unused_result)) // supported +// V8_HAS_BUILTIN_BSWAP16 - __builtin_bswap16() supported +// V8_HAS_BUILTIN_BSWAP32 - __builtin_bswap32() supported +// V8_HAS_BUILTIN_BSWAP64 - __builtin_bswap64() supported // V8_HAS_BUILTIN_CLZ - __builtin_clz() supported // V8_HAS_BUILTIN_CTZ - __builtin_ctz() supported // V8_HAS_BUILTIN_EXPECT - __builtin_expect() supported @@ -217,6 +220,9 @@ # define V8_HAS_ATTRIBUTE_WARN_UNUSED_RESULT \ (__has_attribute(warn_unused_result)) +# define V8_HAS_BUILTIN_BSWAP16 (__has_builtin(__builtin_bswap16)) +# define V8_HAS_BUILTIN_BSWAP32 (__has_builtin(__builtin_bswap32)) +# define V8_HAS_BUILTIN_BSWAP64 (__has_builtin(__builtin_bswap64)) # define V8_HAS_BUILTIN_CLZ (__has_builtin(__builtin_clz)) # define V8_HAS_BUILTIN_CTZ (__has_builtin(__builtin_ctz)) # define V8_HAS_BUILTIN_EXPECT (__has_builtin(__builtin_expect)) @@ -405,7 +411,7 @@ namespace v8 { template class AlignOfHelper { char c; T t; }; } // Annotate a function indicating the caller must examine the return value. // Use like: -// int foo() WARN_UNUSED_RESULT; +// int foo() V8_WARN_UNUSED_RESULT; #if V8_HAS_ATTRIBUTE_WARN_UNUSED_RESULT #define V8_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) #else diff --git a/deps/v8/infra/config/cq.cfg b/deps/v8/infra/config/cq.cfg index cda76faf51b576..6159b3f1cdeca4 100644 --- a/deps/v8/infra/config/cq.cfg +++ b/deps/v8/infra/config/cq.cfg @@ -31,6 +31,7 @@ verifiers { triggered_by: "v8_linux64_asan_rel_ng" } builders { name: "v8_linux64_gcc_compile_dbg" } + builders { name: "v8_linux64_jumbo_compile_rel" } builders { name: "v8_linux64_rel_ng" } builders { name: "v8_linux64_rel_ng_triggered" @@ -84,10 +85,10 @@ verifiers { name: "v8_linux_verify_csa_rel_ng_triggered" triggered_by: "v8_linux_verify_csa_rel_ng" } - builders { name: "v8_mac_rel_ng" } + builders { name: "v8_mac64_rel_ng" } builders { - name: "v8_mac_rel_ng_triggered" - triggered_by: "v8_mac_rel_ng" + name: "v8_mac64_rel_ng_triggered" + triggered_by: "v8_mac64_rel_ng" } builders { name: "v8_node_linux64_rel" } builders { name: "v8_presubmit" } diff --git a/deps/v8/infra/mb/gn_isolate_map.pyl b/deps/v8/infra/mb/gn_isolate_map.pyl new file mode 100644 index 00000000000000..8f13079ea3d3b4 --- /dev/null +++ b/deps/v8/infra/mb/gn_isolate_map.pyl @@ -0,0 +1,74 @@ +# 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. + +# gn_isolate_map.pyl - A mapping of Ninja build target names to GN labels and +# test type classifications for the tests that are run on the bots. +# +# This file is based on testing/buildbot/gn_isolate_map.pyl for Chromium, but +# is covering V8 stand-alone tests instead. +# See https://cs.chromium.org/chromium/src/testing/buildbot/gn_isolate_map.pyl +# for more detailed documentation. + +{ + "All": { + "label": "//:All", + "type": "script", + }, + "benchmarks": { + "label": "//test/benchmarks:v8_benchmarks", + "type": "script", + }, + "bot_default": { + "label": "//test:v8_bot_default", + "type": "script", + }, + "check-static-initializers": { + "label": "//tools:v8_check_static_initializers", + "type": "script", + }, + "d8_default": { + "label": "//test:v8_d8_default", + "type": "script", + }, + "mjsunit": { + "label": "//test/mjsunit:v8_mjsunit", + "type": "script", + }, + "mozilla": { + "label": "//test/mozilla:v8_mozilla", + "type": "script", + }, + "optimize_for_size": { + "label": "//test:v8_optimize_for_size", + "type": "script", + }, + "perf": { + "label": "//test:v8_perf", + "type": "script", + }, + "jsfunfuzz": { + "label": "//tools/jsfunfuzz:v8_jsfunfuzz", + "type": "script", + }, + "run-gcmole": { + "label": "//tools/gcmole:v8_run_gcmole", + "type": "script", + }, + "run-num-fuzzer": { + "label": "//test:v8_run_num_fuzzer", + "type": "script", + }, + "test262": { + "label": "//test/test262:v8_test262", + "type": "script", + }, + "unittests": { + "label": "//test/unittests:unittests", + "type": "script", + }, + "webkit": { + "label": "//test/webkit:v8_webkit", + "type": "script", + }, +} \ No newline at end of file diff --git a/deps/v8/infra/mb/mb_config.pyl b/deps/v8/infra/mb/mb_config.pyl index 15ce744999bf5c..70a7ad5754e0cb 100644 --- a/deps/v8/infra/mb/mb_config.pyl +++ b/deps/v8/infra/mb/mb_config.pyl @@ -68,6 +68,11 @@ 'V8 Linux64 - custom snapshot - debug builder': 'debug_x64_custom', 'V8 Linux64 - internal snapshot': 'release_x64_internal', 'V8 Linux64 - verify csa': 'release_x64_verify_csa', + # Jumbo. + 'V8 Linux64 Jumbo': 'release_x64_jumbo', + 'V8 Linux64 Jumbo - debug': 'debug_x64_jumbo', + 'V8 Linux64 Jumbo - limited': 'release_x64_jumbo_limited', + 'V8 Linux64 Jumbo - limited - debug': 'debug_x64_jumbo_limited', # Windows. 'V8 Win32 - builder': 'release_x86_minimal_symbols', 'V8 Win32 - debug builder': 'debug_x86_minimal_symbols', @@ -79,11 +84,9 @@ 'V8 Win64 - debug': 'debug_x64_minimal_symbols', 'V8 Win64 - msvc': 'release_x64_msvc', # Mac. - 'V8 Mac': 'release_x86', - 'V8 Mac - debug': 'debug_x86', 'V8 Mac64': 'release_x64', 'V8 Mac64 - debug': 'debug_x64', - 'V8 Mac GC Stress': 'debug_x86', + 'V8 Mac64 GC Stress': 'debug_x64', 'V8 Mac64 ASAN': 'release_x64_asan_no_lsan', # Sanitizers. 'V8 Linux64 ASAN': 'release_x64_asan', @@ -97,7 +100,6 @@ # FYI. 'V8 Fuchsia': 'release_x64_fuchsia', 'V8 Fuchsia - debug': 'debug_x64_fuchsia', - 'V8 Linux - swarming staging': 'release_x64', 'V8 Linux64 - cfi': 'release_x64_cfi', 'V8 Linux64 UBSanVptr': 'release_x64_ubsan_vptr', 'V8 Linux - vtunejit': 'debug_x86_vtunejit', @@ -210,9 +212,12 @@ 'v8_linux64_rel_ng': 'release_x64_test_features_trybot', 'v8_linux64_verify_csa_rel_ng': 'release_x64_verify_csa', 'v8_linux64_asan_rel_ng': 'release_x64_asan_minimal_symbols', + 'v8_linux64_cfi_rel_ng': 'release_x64_cfi', 'v8_linux64_msan_rel': 'release_simulate_arm64_msan_minimal_symbols', 'v8_linux64_sanitizer_coverage_rel': 'release_x64_asan_minimal_symbols_coverage', + 'v8_linux64_jumbo_compile_rel': 'release_x64_jumbo_trybot', + 'v8_linux64_jumbo_limited_compile_rel': 'release_x64_jumbo_limited_trybot', 'v8_linux64_tsan_rel': 'release_x64_tsan_minimal_symbols', 'v8_linux64_tsan_concurrent_marking_rel_ng': 'release_x64_tsan_concurrent_marking_minimal_symbols', @@ -226,12 +231,12 @@ 'v8_win64_asan_rel_ng': 'release_x64_asan_no_lsan', 'v8_win64_msvc_compile_rel': 'release_x64_msvc', 'v8_win64_dbg': 'debug_x64_minimal_symbols', + 'v8_win64_msvc_rel_ng': 'release_x64_msvc', 'v8_win64_rel_ng': 'release_x64_trybot', - 'v8_mac_rel_ng': 'release_x86_trybot', - 'v8_mac_dbg': 'debug_x86_trybot', - 'v8_mac_gc_stress_dbg': 'debug_x86_trybot', - 'v8_mac64_rel': 'release_x64_trybot', - 'v8_mac64_dbg': 'debug_x64_minimal_symbols', + 'v8_mac64_gc_stress_dbg': 'debug_x64_trybot', + 'v8_mac64_rel_ng': 'release_x64_trybot', + 'v8_mac64_dbg': 'debug_x64', + 'v8_mac64_dbg_ng': 'debug_x64', 'v8_mac64_asan_rel': 'release_x64_asan_no_lsan', 'v8_linux_arm_rel_ng': 'release_simulate_arm_trybot', 'v8_linux_arm_dbg': 'debug_simulate_arm', @@ -321,160 +326,174 @@ # Debug configs for simulators. 'debug_simulate_arm': [ - 'debug_bot', 'simulate_arm', 'swarming'], + 'debug_bot', 'simulate_arm'], 'debug_simulate_arm_asan_edge': [ 'debug_bot', 'simulate_arm', 'asan', 'edge'], 'debug_simulate_arm64': [ - 'debug_bot', 'simulate_arm64', 'swarming'], + 'debug_bot', 'simulate_arm64'], 'debug_simulate_arm64_asan_edge': [ 'debug_bot', 'simulate_arm64', 'asan', 'lsan', 'edge'], 'debug_simulate_arm64_no_snap': [ 'debug', 'simulate_arm64', 'shared', 'goma', 'v8_optimized_debug', - 'swarming', 'v8_snapshot_none'], + 'v8_snapshot_none'], 'debug_simulate_mipsel_asan_edge': [ 'debug_bot', 'simulate_mipsel', 'asan', 'edge'], # Release configs for simulators. 'release_simulate_arm': [ - 'release_bot', 'simulate_arm', 'swarming'], + 'release_bot', 'simulate_arm'], 'release_simulate_arm_trybot': [ - 'release_trybot', 'simulate_arm', 'swarming'], + 'release_trybot', 'simulate_arm'], 'release_simulate_arm64': [ - 'release_bot', 'simulate_arm64', 'swarming'], + 'release_bot', 'simulate_arm64'], 'release_simulate_arm64_msan': [ - 'release_bot', 'simulate_arm64', 'msan', 'swarming'], + 'release_bot', 'simulate_arm64', 'msan'], 'release_simulate_arm64_msan_minimal_symbols': [ - 'release_bot', 'simulate_arm64', 'msan', 'minimal_symbols', 'swarming'], + 'release_bot', 'simulate_arm64', 'msan', 'minimal_symbols'], 'release_simulate_arm64_msan_edge': [ 'release_bot', 'simulate_arm64', 'edge', 'msan'], 'release_simulate_arm64_msan_no_origins_edge': [ 'release_bot', 'simulate_arm64', 'edge', 'msan_no_origins'], 'release_simulate_arm64_trybot': [ - 'release_trybot', 'simulate_arm64', 'swarming'], + 'release_trybot', 'simulate_arm64'], 'release_simulate_mipsel': [ - 'release_bot', 'simulate_mipsel', 'swarming'], + 'release_bot', 'simulate_mipsel'], 'release_simulate_mips64el': [ - 'release_bot', 'simulate_mips64el', 'swarming'], + 'release_bot', 'simulate_mips64el'], 'release_simulate_ppc': [ - 'release_bot', 'simulate_ppc', 'swarming'], + 'release_bot', 'simulate_ppc'], 'release_simulate_ppc64': [ - 'release_bot', 'simulate_ppc64', 'swarming'], + 'release_bot', 'simulate_ppc64'], 'release_simulate_s390': [ - 'release_bot', 'simulate_s390', 'swarming'], + 'release_bot', 'simulate_s390'], 'release_simulate_s390x': [ - 'release_bot', 'simulate_s390x', 'swarming'], + 'release_bot', 'simulate_s390x'], # Debug configs for arm. 'debug_arm': [ - 'debug_bot', 'arm', 'hard_float', 'swarming'], + 'debug_bot', 'arm', 'hard_float'], # Release configs for arm. 'release_arm': [ - 'release_bot', 'arm', 'hard_float', 'swarming'], + 'release_bot', 'arm', 'hard_float'], 'release_android_arm': [ - 'release_bot', 'arm', 'android', 'minimal_symbols', 'swarming'], + 'release_bot', 'arm', 'android', 'minimal_symbols'], 'release_android_arm64': [ - 'release_bot', 'arm64', 'android', 'minimal_symbols', 'swarming'], + 'release_bot', 'arm64', 'android', 'minimal_symbols'], # Release configs for x64. 'release_x64': [ - 'release_bot', 'x64', 'swarming'], + 'release_bot', 'x64'], 'release_x64_asan': [ - 'release_bot', 'x64', 'asan', 'lsan', 'swarming'], + 'release_bot', 'x64', 'asan', 'lsan'], 'release_x64_asan_minimal_symbols': [ - 'release_bot', 'x64', 'asan', 'lsan', 'minimal_symbols', 'swarming'], + 'release_bot', 'x64', 'asan', 'lsan', 'minimal_symbols'], 'release_x64_asan_minimal_symbols_coverage': [ - 'release_bot', 'x64', 'asan', 'bb', 'coverage', 'lsan', 'minimal_symbols', - 'swarming'], + 'release_bot', 'x64', 'asan', 'bb', 'coverage', 'lsan', 'minimal_symbols'], 'release_x64_asan_no_lsan': [ - 'release_bot', 'x64', 'asan', 'swarming'], + 'release_bot', 'x64', 'asan'], 'release_x64_asan_no_lsan_edge_verify_heap': [ - 'release_bot', 'x64', 'asan', 'edge', 'swarming', 'v8_verify_heap'], + 'release_bot', 'x64', 'asan', 'edge', 'v8_verify_heap'], 'release_x64_asan_no_lsan_verify_heap': [ - 'release_bot', 'x64', 'asan', 'swarming', 'v8_verify_heap'], + 'release_bot', 'x64', 'asan', 'v8_verify_heap'], 'release_x64_asan_no_lsan_verify_heap_dchecks': [ - 'release_bot', 'x64', 'asan', 'swarming', 'dcheck_always_on', + 'release_bot', 'x64', 'asan', 'dcheck_always_on', 'v8_enable_slow_dchecks', 'v8_verify_heap'], 'release_x64_asan_symbolized_edge_verify_heap': [ 'release_bot', 'x64', 'asan', 'edge', 'lsan', 'symbolized', 'v8_verify_heap'], 'release_x64_cfi': [ - 'release_bot', 'x64', 'cfi', 'swarming'], + 'release_bot', 'x64', 'cfi'], 'release_x64_cfi_clusterfuzz': [ 'release_bot', 'x64', 'cfi_clusterfuzz'], 'release_x64_msvc': [ - 'release_bot', 'x64', 'msvc', 'swarming'], + 'release_bot', 'x64', 'msvc'], 'release_x64_concurrent_marking': [ - 'release_bot', 'x64', 'v8_enable_concurrent_marking', 'swarming'], + 'release_bot', 'x64', 'v8_enable_concurrent_marking'], 'release_x64_correctness_fuzzer' : [ - 'release_bot', 'x64', 'v8_correctness_fuzzer', 'swarming'], + 'release_bot', 'x64', 'v8_correctness_fuzzer'], 'release_x64_fuchsia': [ - 'release_bot', 'x64', 'fuchsia', 'swarming'], + 'release_bot', 'x64', 'fuchsia'], 'release_x64_fuchsia_trybot': [ - 'release_trybot', 'x64', 'fuchsia', 'swarming'], + 'release_trybot', 'x64', 'fuchsia'], 'release_x64_gcc_coverage': [ 'release_bot', 'x64', 'coverage', 'gcc'], 'release_x64_internal': [ - 'release_bot', 'x64', 'swarming', 'v8_snapshot_internal'], + 'release_bot', 'x64', 'v8_enable_embedded_builtins', + 'v8_snapshot_internal'], + 'release_x64_jumbo': [ + 'release_bot', 'x64', 'jumbo'], + 'release_x64_jumbo_trybot': [ + 'release_trybot', 'x64', 'jumbo'], + 'release_x64_jumbo_limited': [ + 'release_bot', 'x64', 'jumbo_limited'], + 'release_x64_jumbo_limited_trybot': [ + 'release_trybot', 'x64', 'jumbo_limited'], 'release_x64_minimal_symbols': [ - 'release_bot', 'x64', 'minimal_symbols', 'swarming'], + 'release_bot', 'x64', 'minimal_symbols'], 'release_x64_no_snap': [ - 'release_bot', 'x64', 'swarming', 'v8_snapshot_none'], + 'release_bot', 'x64', 'v8_snapshot_none'], 'release_x64_trybot': [ - 'release_trybot', 'x64', 'swarming'], + 'release_trybot', 'x64'], 'release_x64_test_features_trybot': [ - 'release_trybot', 'x64', 'swarming', 'v8_enable_test_features'], + 'release_trybot', 'x64', 'v8_enable_test_features'], 'release_x64_tsan': [ - 'release_bot', 'x64', 'tsan', 'swarming'], + 'release_bot', 'x64', 'tsan'], 'release_x64_tsan_concurrent_marking': [ - 'release_bot', 'x64', 'v8_enable_concurrent_marking', 'tsan', 'swarming'], + 'release_bot', 'x64', 'v8_enable_concurrent_marking', 'tsan'], 'release_x64_tsan_concurrent_marking_minimal_symbols': [ 'release_bot', 'x64', 'v8_enable_concurrent_marking', 'tsan', - 'minimal_symbols', 'swarming'], + 'minimal_symbols'], 'release_x64_tsan_minimal_symbols': [ - 'release_bot', 'x64', 'tsan', 'minimal_symbols', 'swarming'], + 'release_bot', 'x64', 'tsan', 'minimal_symbols'], 'release_x64_ubsan_vptr': [ - 'release_bot', 'x64', 'ubsan_vptr', 'swarming'], + 'release_bot', 'x64', 'ubsan_vptr'], 'release_x64_ubsan_vptr_recover_edge': [ - 'release_bot', 'x64', 'edge', 'ubsan_vptr_recover', 'swarming'], + 'release_bot', 'x64', 'edge', 'ubsan_vptr_recover'], 'release_x64_ubsan_vptr_minimal_symbols': [ - 'release_bot', 'x64', 'ubsan_vptr', 'minimal_symbols', 'swarming'], + 'release_bot', 'x64', 'ubsan_vptr', 'minimal_symbols'], 'release_x64_verify_csa': [ - 'release_bot', 'x64', 'swarming', 'dcheck_always_on', - 'v8_enable_slow_dchecks', 'v8_verify_csa'], + 'release_bot', 'x64', 'dcheck_always_on', + 'v8_enable_slow_dchecks', 'v8_enable_embedded_builtins', 'v8_verify_csa'], # Debug configs for x64. 'debug_x64': [ - 'debug_bot', 'x64', 'swarming'], + 'debug_bot', 'x64'], 'debug_x64_asan_edge': [ 'debug_bot', 'x64', 'asan', 'lsan', 'edge'], 'debug_x64_asan_no_lsan_static_edge': [ 'debug', 'static', 'goma', 'v8_enable_slow_dchecks', 'v8_optimized_debug', - 'x64', 'asan', 'edge', 'swarming'], + 'x64', 'asan', 'edge'], 'debug_x64_custom': [ - 'debug_bot', 'x64', 'swarming', 'v8_snapshot_custom'], + 'debug_bot', 'x64', 'v8_snapshot_custom'], 'debug_x64_fuchsia': [ - 'debug_bot', 'x64', 'fuchsia', 'swarming'], + 'debug_bot', 'x64', 'fuchsia'], 'debug_x64_gcc': [ 'debug_bot', 'x64', 'gcc'], + 'debug_x64_jumbo': [ + 'debug_bot', 'x64', 'jumbo'], + 'debug_x64_jumbo_limited': [ + 'debug_bot', 'x64', 'jumbo_limited'], 'debug_x64_minimal_symbols': [ - 'debug_bot', 'x64', 'minimal_symbols', 'swarming'], + 'debug_bot', 'x64', 'minimal_symbols'], 'debug_x64_no_snap': [ - 'debug_bot', 'x64', 'swarming', 'v8_snapshot_none'], + 'debug_bot', 'x64', 'v8_snapshot_none'], + 'debug_x64_trybot': [ + 'debug_trybot', 'x64'], # Debug configs for x86. 'debug_x86': [ - 'debug_bot', 'x86', 'swarming'], + 'debug_bot', 'x86'], 'debug_x86_minimal_symbols': [ - 'debug_bot', 'x86', 'minimal_symbols', 'swarming'], + 'debug_bot', 'x86', 'minimal_symbols'], 'debug_x86_no_i18n': [ - 'debug_bot', 'x86', 'swarming', 'v8_no_i18n'], + 'debug_bot', 'x86', 'v8_no_i18n'], 'debug_x86_no_snap': [ - 'debug_bot', 'x86', 'swarming', 'v8_snapshot_none'], + 'debug_bot', 'x86', 'v8_snapshot_none'], 'debug_x86_no_snap_trybot': [ - 'debug_trybot', 'x86', 'swarming', 'v8_snapshot_none'], + 'debug_trybot', 'x86', 'v8_snapshot_none'], 'debug_x86_trybot': [ - 'debug_trybot', 'x86', 'swarming'], + 'debug_trybot', 'x86'], 'debug_x86_vtunejit': [ 'debug_bot', 'x86', 'v8_enable_vtunejit'], 'full_debug_x86': [ @@ -483,7 +502,7 @@ # Release configs for x86. 'release_x86': [ - 'release_bot', 'x86', 'swarming'], + 'release_bot', 'x86'], 'release_x86_disassembler': [ 'release_bot', 'x86', 'v8_enable_disassembler'], 'release_x86_gcc': [ @@ -491,30 +510,30 @@ 'release_x86_gcc_minimal_symbols': [ 'release_bot', 'x86', 'gcc', 'minimal_symbols'], 'release_x86_gcmole': [ - 'release_bot', 'x86', 'gcmole', 'swarming'], + 'release_bot', 'x86', 'gcmole'], 'release_x86_gcmole_trybot': [ - 'release_trybot', 'x86', 'gcmole', 'swarming'], + 'release_trybot', 'x86', 'gcmole'], 'release_x86_interpreted_regexp': [ 'release_bot', 'x86', 'v8_interpreted_regexp'], 'release_x86_minimal_symbols': [ - 'release_bot', 'x86', 'minimal_symbols', 'swarming'], + 'release_bot', 'x86', 'minimal_symbols'], 'release_x86_no_i18n_trybot': [ - 'release_trybot', 'x86', 'swarming', 'v8_no_i18n'], + 'release_trybot', 'x86', 'v8_no_i18n'], 'release_x86_no_snap': [ - 'release_bot', 'x86', 'swarming', 'v8_snapshot_none'], + 'release_bot', 'x86', 'v8_snapshot_none'], 'release_x86_no_snap_shared_minimal_symbols': [ - 'release', 'x86', 'goma', 'minimal_symbols', 'shared', 'swarming', + 'release', 'x86', 'goma', 'minimal_symbols', 'shared', 'v8_snapshot_none'], 'release_x86_no_snap_trybot': [ - 'release_trybot', 'x86', 'swarming', 'v8_snapshot_none'], + 'release_trybot', 'x86', 'v8_snapshot_none'], 'release_x86_predictable': [ 'release_bot', 'x86', 'v8_enable_verify_predictable'], 'release_x86_shared_verify_heap': [ - 'release', 'x86', 'goma', 'shared', 'swarming', 'v8_verify_heap'], + 'release', 'x86', 'goma', 'shared', 'v8_verify_heap'], 'release_x86_trybot': [ - 'release_trybot', 'x86', 'swarming'], + 'release_trybot', 'x86'], 'release_x86_verify_csa': [ - 'release_bot', 'x86', 'swarming', 'dcheck_always_on', + 'release_bot', 'x86', 'dcheck_always_on', 'v8_enable_slow_dchecks', 'v8_verify_csa'], # Release configs for mips. @@ -608,6 +627,14 @@ 'gn_args': 'arm_float_abi="hard"', }, + 'jumbo': { + 'gn_args': 'use_jumbo_build=true', + }, + + 'jumbo_limited': { + 'gn_args': 'use_jumbo_build=true jumbo_file_merge_limit=50', + }, + 'lsan': { 'mixins': ['v8_enable_test_features'], 'gn_args': 'is_lsan=true', @@ -699,10 +726,6 @@ 'gn_args': 'is_component_build=false', }, - 'swarming': { - 'gn_args': 'v8_test_isolation_mode="prepare"', - }, - # TODO(machenbach): Remove the symbolized config after the bots are gone. 'symbolized': { 'gn_args': 'v8_no_inline=true', @@ -744,6 +767,10 @@ 'gn_args': 'v8_enable_disassembler=true', }, + 'v8_enable_embedded_builtins': { + 'gn_args': 'v8_enable_embedded_builtins=true', + }, + 'v8_enable_slow_dchecks': { 'gn_args': 'v8_enable_slow_dchecks=true', }, diff --git a/deps/v8/src/DEPS b/deps/v8/src/DEPS index bbf47e61071faf..050f91d6d6d990 100644 --- a/deps/v8/src/DEPS +++ b/deps/v8/src/DEPS @@ -8,6 +8,8 @@ include_rules = [ "+src/compiler/code-assembler.h", "+src/compiler/wasm-compiler.h", "-src/heap", + "+src/heap/factory.h", + "+src/heap/factory-inl.h", "+src/heap/heap.h", "+src/heap/heap-inl.h", "-src/inspector", diff --git a/deps/v8/src/accessors.cc b/deps/v8/src/accessors.cc index eb892886857213..f292988b8e1e5d 100644 --- a/deps/v8/src/accessors.cc +++ b/deps/v8/src/accessors.cc @@ -8,8 +8,8 @@ #include "src/contexts.h" #include "src/deoptimizer.h" #include "src/execution.h" -#include "src/factory.h" #include "src/frames-inl.h" +#include "src/heap/factory.h" #include "src/isolate-inl.h" #include "src/messages.h" #include "src/property-details.h" @@ -28,6 +28,7 @@ Handle Accessors::MakeAccessor( info->set_is_special_data_property(true); info->set_is_sloppy(false); info->set_replace_on_access(false); + info->set_has_no_side_effect(false); name = factory->InternalizeName(name); info->set_name(*name); Handle get = v8::FromCData(isolate, getter); @@ -78,7 +79,7 @@ bool Accessors::IsJSObjectFieldAccessor(Handle map, Handle name, namespace { -MUST_USE_RESULT MaybeHandle ReplaceAccessorWithDataProperty( +V8_WARN_UNUSED_RESULT MaybeHandle ReplaceAccessorWithDataProperty( Isolate* isolate, Handle receiver, Handle holder, Handle name, Handle value) { LookupIterator it(receiver, name, holder, @@ -97,6 +98,9 @@ MUST_USE_RESULT MaybeHandle ReplaceAccessorWithDataProperty( } // namespace +// +// Accessors::ReconfigureToDataProperty +// void Accessors::ReconfigureToDataProperty( v8::Local key, v8::Local val, const v8::PropertyCallbackInfo& info) { @@ -118,6 +122,18 @@ void Accessors::ReconfigureToDataProperty( } } +void Accessors::ReconfigureToDataPropertyGetter( + v8::Local name, const v8::PropertyCallbackInfo& info) { + UNREACHABLE(); +} + +Handle Accessors::MakeReconfigureToDataPropertyInfo( + Isolate* isolate) { + Handle name = isolate->factory()->ReconfigureToDataProperty_string(); + return MakeAccessor(isolate, name, &ReconfigureToDataPropertyGetter, + &ReconfigureToDataProperty); +} + // // Accessors::ArgumentsIterator // @@ -299,7 +315,6 @@ Handle Accessors::MakeStringLengthInfo(Isolate* isolate) { &StringLengthGetter, nullptr); } - // // Accessors::ScriptColumnOffset // @@ -613,7 +628,7 @@ void Accessors::ScriptEvalFromFunctionNameGetter( if (script->has_eval_from_shared()) { Handle shared(script->eval_from_shared()); // Find the name of the function calling eval. - result = Handle(shared->name(), isolate); + result = Handle(shared->Name(), isolate); } info.GetReturnValue().Set(Utils::ToLocal(result)); } diff --git a/deps/v8/src/accessors.h b/deps/v8/src/accessors.h index 70e6a9200ec7a6..1911f92dbf93dd 100644 --- a/deps/v8/src/accessors.h +++ b/deps/v8/src/accessors.h @@ -33,6 +33,7 @@ class JavaScriptFrame; V(function_name, FunctionName) \ V(function_length, FunctionLength) \ V(function_prototype, FunctionPrototype) \ + V(reconfigure_to_data_property, ReconfigureToDataProperty) \ V(script_column_offset, ScriptColumnOffset) \ V(script_compilation_type, ScriptCompilationType) \ V(script_context_data, ScriptContextData) \ @@ -48,6 +49,15 @@ class JavaScriptFrame; V(script_source_mapping_url, ScriptSourceMappingUrl) \ V(string_length, StringLength) +#define SIDE_EFFECT_FREE_ACCESSOR_INFO_LIST(V) \ + V(ArrayLength) \ + V(BoundFunctionLength) \ + V(BoundFunctionName) \ + V(FunctionName) \ + V(FunctionLength) \ + V(FunctionPrototype) \ + V(StringLength) + #define ACCESSOR_SETTER_LIST(V) \ V(ArrayLengthSetter) \ V(ErrorStackSetter) \ @@ -73,6 +83,16 @@ class Accessors : public AllStatic { ACCESSOR_SETTER_LIST(ACCESSOR_SETTER_DECLARATION) #undef ACCESSOR_SETTER_DECLARATION + static constexpr int kAccessorInfoCount = +#define COUNT_ACCESSOR(...) +1 + ACCESSOR_INFO_LIST(COUNT_ACCESSOR); +#undef COUNT_ACCESSOR + + static constexpr int kAccessorSetterCount = +#define COUNT_ACCESSOR(...) +1 + ACCESSOR_SETTER_LIST(COUNT_ACCESSOR); +#undef COUNT_ACCESSOR + static void ModuleNamespaceEntryGetter( v8::Local name, const v8::PropertyCallbackInfo& info); diff --git a/deps/v8/src/allocation.cc b/deps/v8/src/allocation.cc index 5493b34789eb00..f63c2f292f5b00 100644 --- a/deps/v8/src/allocation.cc +++ b/deps/v8/src/allocation.cc @@ -69,7 +69,7 @@ const int kAllocationTries = 2; void* Malloced::New(size_t size) { void* result = AllocWithRetry(size); if (result == nullptr) { - V8::FatalProcessOutOfMemory("Malloced operator new"); + V8::FatalProcessOutOfMemory(nullptr, "Malloced operator new"); } return result; } @@ -115,7 +115,7 @@ void* AlignedAlloc(size_t size, size_t alignment) { if (!OnCriticalMemoryPressure(size + alignment)) break; } if (result == nullptr) { - V8::FatalProcessOutOfMemory("AlignedAlloc"); + V8::FatalProcessOutOfMemory(nullptr, "AlignedAlloc"); } return result; } diff --git a/deps/v8/src/allocation.h b/deps/v8/src/allocation.h index 9bb47c8f05d2a1..13dc3e508f3d3c 100644 --- a/deps/v8/src/allocation.h +++ b/deps/v8/src/allocation.h @@ -14,13 +14,16 @@ namespace v8 { namespace internal { +class Isolate; + // This file defines memory allocation functions. If a first attempt at an // allocation fails, these functions call back into the embedder, then attempt // the allocation a second time. The embedder callback must not reenter V8. // Called when allocation routines fail to allocate, even with a possible retry. // This function should not return, but should terminate the current processing. -V8_EXPORT_PRIVATE void FatalProcessOutOfMemory(const char* message); +[[noreturn]] V8_EXPORT_PRIVATE void FatalProcessOutOfMemory( + Isolate* isolate, const char* message); // Superclass for classes managed with new & delete. class V8_EXPORT_PRIVATE Malloced { @@ -38,13 +41,13 @@ T* NewArray(size_t size) { if (result == nullptr) { V8::GetCurrentPlatform()->OnCriticalMemoryPressure(); result = new (std::nothrow) T[size]; - if (result == nullptr) FatalProcessOutOfMemory("NewArray"); + if (result == nullptr) FatalProcessOutOfMemory(nullptr, "NewArray"); } return result; } -template ::type> +template ::value>::type> T* NewArray(size_t size, T default_val) { T* result = reinterpret_cast(NewArray(sizeof(T) * size)); for (size_t i = 0; i < size; ++i) result[i] = default_val; diff --git a/deps/v8/src/api-arguments-inl.h b/deps/v8/src/api-arguments-inl.h index b8336f97c4fbe2..1cf9662b94997b 100644 --- a/deps/v8/src/api-arguments-inl.h +++ b/deps/v8/src/api-arguments-inl.h @@ -13,56 +13,63 @@ namespace v8 { namespace internal { -#define FOR_EACH_CALLBACK(F) \ - F(Query, query, Object, v8::Integer) \ - F(Deleter, deleter, Object, v8::Boolean) - -#define PREPARE_CALLBACK_INFO(ISOLATE, F, RETURN_VALUE, API_RETURN_TYPE) \ - if (ISOLATE->needs_side_effect_check() && \ - !PerformSideEffectCheck(ISOLATE, FUNCTION_ADDR(F))) { \ - return RETURN_VALUE(); \ - } \ - VMState state(ISOLATE); \ - ExternalCallbackScope call_scope(ISOLATE, FUNCTION_ADDR(F)); \ +#define FOR_EACH_CALLBACK(F) \ + F(Query, query, Object, v8::Integer, interceptor) \ + F(Deleter, deleter, Object, v8::Boolean, Handle()) + +#define DCHECK_NAME_COMPATIBLE(interceptor, name) \ + DCHECK(interceptor->is_named()); \ + DCHECK(!name->IsPrivate()); \ + DCHECK_IMPLIES(name->IsSymbol(), interceptor->can_intercept_symbols()); + +#define PREPARE_CALLBACK_INFO(ISOLATE, F, RETURN_VALUE, API_RETURN_TYPE, \ + CALLBACK_INFO) \ + if (ISOLATE->debug_execution_mode() == DebugInfo::kSideEffects && \ + !ISOLATE->debug()->PerformSideEffectCheckForCallback(CALLBACK_INFO)) { \ + return RETURN_VALUE(); \ + } \ + VMState state(ISOLATE); \ + ExternalCallbackScope call_scope(ISOLATE, FUNCTION_ADDR(F)); \ PropertyCallbackInfo callback_info(begin()); -#define CREATE_NAMED_CALLBACK(Function, type, ReturnType, ApiReturnType) \ - Handle PropertyCallbackArguments::CallNamed##Function( \ +#define CREATE_NAMED_CALLBACK(FUNCTION, TYPE, RETURN_TYPE, API_RETURN_TYPE, \ + INFO_FOR_SIDE_EFFECT) \ + Handle PropertyCallbackArguments::CallNamed##FUNCTION( \ Handle interceptor, Handle name) { \ - DCHECK(interceptor->is_named()); \ - DCHECK(!name->IsPrivate()); \ - DCHECK_IMPLIES(name->IsSymbol(), interceptor->can_intercept_symbols()); \ + DCHECK_NAME_COMPATIBLE(interceptor, name); \ Isolate* isolate = this->isolate(); \ RuntimeCallTimerScope timer( \ - isolate, RuntimeCallCounterId::kNamed##Function##Callback); \ - DCHECK(!name->IsPrivate()); \ - GenericNamedProperty##Function##Callback f = \ - ToCData( \ - interceptor->type()); \ - PREPARE_CALLBACK_INFO(isolate, f, Handle, ApiReturnType); \ + isolate, RuntimeCallCounterId::kNamed##FUNCTION##Callback); \ + GenericNamedProperty##FUNCTION##Callback f = \ + ToCData( \ + interceptor->TYPE()); \ + PREPARE_CALLBACK_INFO(isolate, f, Handle, API_RETURN_TYPE, \ + INFO_FOR_SIDE_EFFECT); \ LOG(isolate, \ - ApiNamedPropertyAccess("interceptor-named-" #type, holder(), *name)); \ + ApiNamedPropertyAccess("interceptor-named-" #TYPE, holder(), *name)); \ f(v8::Utils::ToLocal(name), callback_info); \ - return GetReturnValue(isolate); \ + return GetReturnValue(isolate); \ } FOR_EACH_CALLBACK(CREATE_NAMED_CALLBACK) #undef CREATE_NAMED_CALLBACK -#define CREATE_INDEXED_CALLBACK(Function, type, ReturnType, ApiReturnType) \ - Handle PropertyCallbackArguments::CallIndexed##Function( \ - Handle interceptor, uint32_t index) { \ - DCHECK(!interceptor->is_named()); \ - Isolate* isolate = this->isolate(); \ - RuntimeCallTimerScope timer( \ - isolate, RuntimeCallCounterId::kIndexed##Function##Callback); \ - IndexedProperty##Function##Callback f = \ - ToCData(interceptor->type()); \ - PREPARE_CALLBACK_INFO(isolate, f, Handle, ApiReturnType); \ - LOG(isolate, ApiIndexedPropertyAccess("interceptor-indexed-" #type, \ - holder(), index)); \ - f(index, callback_info); \ - return GetReturnValue(isolate); \ +#define CREATE_INDEXED_CALLBACK(FUNCTION, TYPE, RETURN_TYPE, API_RETURN_TYPE, \ + INFO_FOR_SIDE_EFFECT) \ + Handle PropertyCallbackArguments::CallIndexed##FUNCTION( \ + Handle interceptor, uint32_t index) { \ + DCHECK(!interceptor->is_named()); \ + Isolate* isolate = this->isolate(); \ + RuntimeCallTimerScope timer( \ + isolate, RuntimeCallCounterId::kIndexed##FUNCTION##Callback); \ + IndexedProperty##FUNCTION##Callback f = \ + ToCData(interceptor->TYPE()); \ + PREPARE_CALLBACK_INFO(isolate, f, Handle, API_RETURN_TYPE, \ + INFO_FOR_SIDE_EFFECT); \ + LOG(isolate, ApiIndexedPropertyAccess("interceptor-indexed-" #TYPE, \ + holder(), index)); \ + f(index, callback_info); \ + return GetReturnValue(isolate); \ } FOR_EACH_CALLBACK(CREATE_INDEXED_CALLBACK) @@ -70,11 +77,44 @@ FOR_EACH_CALLBACK(CREATE_INDEXED_CALLBACK) #undef FOR_EACH_CALLBACK #undef CREATE_INDEXED_CALLBACK +Handle FunctionCallbackArguments::Call(CallHandlerInfo* handler) { + Isolate* isolate = this->isolate(); + LOG(isolate, ApiObjectAccess("call", holder())); + RuntimeCallTimerScope timer(isolate, RuntimeCallCounterId::kFunctionCallback); + v8::FunctionCallback f = + v8::ToCData(handler->callback()); + if (isolate->debug_execution_mode() == DebugInfo::kSideEffects && + !isolate->debug()->PerformSideEffectCheckForCallback(handle(handler))) { + return Handle(); + } + VMState state(isolate); + ExternalCallbackScope call_scope(isolate, FUNCTION_ADDR(f)); + FunctionCallbackInfo info(begin(), argv_, argc_); + f(info); + return GetReturnValue(isolate); +} + +Handle PropertyCallbackArguments::CallNamedEnumerator( + Handle interceptor) { + DCHECK(interceptor->is_named()); + LOG(isolate(), ApiObjectAccess("interceptor-named-enumerator", holder())); + RuntimeCallTimerScope timer(isolate(), + RuntimeCallCounterId::kNamedEnumeratorCallback); + return CallPropertyEnumerator(interceptor); +} + +Handle PropertyCallbackArguments::CallIndexedEnumerator( + Handle interceptor) { + DCHECK(!interceptor->is_named()); + LOG(isolate(), ApiObjectAccess("interceptor-indexed-enumerator", holder())); + RuntimeCallTimerScope timer(isolate(), + RuntimeCallCounterId::kIndexedEnumeratorCallback); + return CallPropertyEnumerator(interceptor); +} + Handle PropertyCallbackArguments::CallNamedGetter( Handle interceptor, Handle name) { - DCHECK(interceptor->is_named()); - DCHECK_IMPLIES(name->IsSymbol(), interceptor->can_intercept_symbols()); - DCHECK(!name->IsPrivate()); + DCHECK_NAME_COMPATIBLE(interceptor, name); Isolate* isolate = this->isolate(); RuntimeCallTimerScope timer(isolate, RuntimeCallCounterId::kNamedGetterCallback); @@ -82,13 +122,12 @@ Handle PropertyCallbackArguments::CallNamedGetter( ApiNamedPropertyAccess("interceptor-named-getter", holder(), *name)); GenericNamedPropertyGetterCallback f = ToCData(interceptor->getter()); - return BasicCallNamedGetterCallback(f, name); + return BasicCallNamedGetterCallback(f, name, interceptor); } Handle PropertyCallbackArguments::CallNamedDescriptor( Handle interceptor, Handle name) { - DCHECK(interceptor->is_named()); - DCHECK_IMPLIES(name->IsSymbol(), interceptor->can_intercept_symbols()); + DCHECK_NAME_COMPATIBLE(interceptor, name); Isolate* isolate = this->isolate(); RuntimeCallTimerScope timer(isolate, RuntimeCallCounterId::kNamedDescriptorCallback); @@ -97,14 +136,15 @@ Handle PropertyCallbackArguments::CallNamedDescriptor( GenericNamedPropertyDescriptorCallback f = ToCData( interceptor->descriptor()); - return BasicCallNamedGetterCallback(f, name); + return BasicCallNamedGetterCallback(f, name, interceptor); } Handle PropertyCallbackArguments::BasicCallNamedGetterCallback( - GenericNamedPropertyGetterCallback f, Handle name) { + GenericNamedPropertyGetterCallback f, Handle name, + Handle info) { DCHECK(!name->IsPrivate()); Isolate* isolate = this->isolate(); - PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value); + PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value, info); f(v8::Utils::ToLocal(name), callback_info); return GetReturnValue(isolate); } @@ -112,20 +152,15 @@ Handle PropertyCallbackArguments::BasicCallNamedGetterCallback( Handle PropertyCallbackArguments::CallNamedSetter( Handle interceptor, Handle name, Handle value) { - DCHECK_IMPLIES(name->IsSymbol(), interceptor->can_intercept_symbols()); + DCHECK_NAME_COMPATIBLE(interceptor, name); GenericNamedPropertySetterCallback f = ToCData(interceptor->setter()); - return CallNamedSetterCallback(f, name, value); -} - -Handle PropertyCallbackArguments::CallNamedSetterCallback( - GenericNamedPropertySetterCallback f, Handle name, - Handle value) { - DCHECK(!name->IsPrivate()); Isolate* isolate = this->isolate(); RuntimeCallTimerScope timer(isolate, RuntimeCallCounterId::kNamedSetterCallback); - PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value); + Handle side_effect_check_not_supported; + PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value, + side_effect_check_not_supported); LOG(isolate, ApiNamedPropertyAccess("interceptor-named-set", holder(), *name)); f(v8::Utils::ToLocal(name), v8::Utils::ToLocal(value), callback_info); @@ -135,15 +170,15 @@ Handle PropertyCallbackArguments::CallNamedSetterCallback( Handle PropertyCallbackArguments::CallNamedDefiner( Handle interceptor, Handle name, const v8::PropertyDescriptor& desc) { - DCHECK(interceptor->is_named()); - DCHECK(!name->IsPrivate()); - DCHECK_IMPLIES(name->IsSymbol(), interceptor->can_intercept_symbols()); + DCHECK_NAME_COMPATIBLE(interceptor, name); Isolate* isolate = this->isolate(); RuntimeCallTimerScope timer(isolate, RuntimeCallCounterId::kNamedDefinerCallback); GenericNamedPropertyDefinerCallback f = ToCData(interceptor->definer()); - PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value); + Handle side_effect_check_not_supported; + PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value, + side_effect_check_not_supported); LOG(isolate, ApiNamedPropertyAccess("interceptor-named-define", holder(), *name)); f(v8::Utils::ToLocal(name), desc, callback_info); @@ -158,7 +193,9 @@ Handle PropertyCallbackArguments::CallIndexedSetter( RuntimeCallCounterId::kIndexedSetterCallback); IndexedPropertySetterCallback f = ToCData(interceptor->setter()); - PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value); + Handle side_effect_check_not_supported; + PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value, + side_effect_check_not_supported); LOG(isolate, ApiIndexedPropertyAccess("interceptor-indexed-set", holder(), index)); f(index, v8::Utils::ToLocal(value), callback_info); @@ -174,7 +211,9 @@ Handle PropertyCallbackArguments::CallIndexedDefiner( RuntimeCallCounterId::kIndexedDefinerCallback); IndexedPropertyDefinerCallback f = ToCData(interceptor->definer()); - PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value); + Handle side_effect_check_not_supported; + PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value, + side_effect_check_not_supported); LOG(isolate, ApiIndexedPropertyAccess("interceptor-indexed-define", holder(), index)); f(index, desc, callback_info); @@ -191,7 +230,7 @@ Handle PropertyCallbackArguments::CallIndexedGetter( ApiIndexedPropertyAccess("interceptor-indexed-getter", holder(), index)); IndexedPropertyGetterCallback f = ToCData(interceptor->getter()); - return BasicCallIndexedGetterCallback(f, index); + return BasicCallIndexedGetterCallback(f, index, interceptor); } Handle PropertyCallbackArguments::CallIndexedDescriptor( @@ -204,13 +243,13 @@ Handle PropertyCallbackArguments::CallIndexedDescriptor( holder(), index)); IndexedPropertyDescriptorCallback f = ToCData(interceptor->descriptor()); - return BasicCallIndexedGetterCallback(f, index); + return BasicCallIndexedGetterCallback(f, index, interceptor); } Handle PropertyCallbackArguments::BasicCallIndexedGetterCallback( - IndexedPropertyGetterCallback f, uint32_t index) { + IndexedPropertyGetterCallback f, uint32_t index, Handle info) { Isolate* isolate = this->isolate(); - PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value); + PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value, info); f(index, callback_info); return GetReturnValue(isolate); } @@ -222,7 +261,7 @@ Handle PropertyCallbackArguments::CallPropertyEnumerator( v8::ToCData(interceptor->enumerator()); // TODO(cbruni): assert same type for indexed and named callback. Isolate* isolate = this->isolate(); - PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Array); + PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Array, interceptor); f(callback_info); return GetReturnValue(isolate); } @@ -238,10 +277,10 @@ Handle PropertyCallbackArguments::CallAccessorGetter( LOG(isolate, ApiNamedPropertyAccess("accessor-getter", holder(), *name)); AccessorNameGetterCallback f = ToCData(info->getter()); - return BasicCallNamedGetterCallback(f, name); + return BasicCallNamedGetterCallback(f, name, info); } -void PropertyCallbackArguments::CallAccessorSetter( +Handle PropertyCallbackArguments::CallAccessorSetter( Handle accessor_info, Handle name, Handle value) { Isolate* isolate = this->isolate(); @@ -249,9 +288,12 @@ void PropertyCallbackArguments::CallAccessorSetter( RuntimeCallCounterId::kAccessorSetterCallback); AccessorNameSetterCallback f = ToCData(accessor_info->setter()); - PREPARE_CALLBACK_INFO(isolate, f, void, void); + Handle side_effect_check_not_supported; + PREPARE_CALLBACK_INFO(isolate, f, Handle, void, + side_effect_check_not_supported); LOG(isolate, ApiNamedPropertyAccess("accessor-setter", holder(), *name)); f(v8::Utils::ToLocal(name), v8::Utils::ToLocal(value), callback_info); + return GetReturnValue(isolate); } #undef PREPARE_CALLBACK_INFO diff --git a/deps/v8/src/api-arguments.cc b/deps/v8/src/api-arguments.cc deleted file mode 100644 index 502b8cbdca2dc4..00000000000000 --- a/deps/v8/src/api-arguments.cc +++ /dev/null @@ -1,57 +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/api-arguments.h" -#include "src/api-arguments-inl.h" - -#include "src/debug/debug.h" -#include "src/objects-inl.h" -#include "src/tracing/trace-event.h" -#include "src/vm-state-inl.h" - -namespace v8 { -namespace internal { - -Handle FunctionCallbackArguments::Call(CallHandlerInfo* handler) { - Isolate* isolate = this->isolate(); - LOG(isolate, ApiObjectAccess("call", holder())); - RuntimeCallTimerScope timer(isolate, RuntimeCallCounterId::kFunctionCallback); - v8::FunctionCallback f = - v8::ToCData(handler->callback()); - if (isolate->needs_side_effect_check() && - !isolate->debug()->PerformSideEffectCheckForCallback(FUNCTION_ADDR(f))) { - return Handle(); - } - VMState state(isolate); - ExternalCallbackScope call_scope(isolate, FUNCTION_ADDR(f)); - FunctionCallbackInfo info(begin(), argv_, argc_); - f(info); - return GetReturnValue(isolate); -} - -Handle PropertyCallbackArguments::CallNamedEnumerator( - Handle interceptor) { - DCHECK(interceptor->is_named()); - LOG(isolate(), ApiObjectAccess("interceptor-named-enumerator", holder())); - RuntimeCallTimerScope timer(isolate(), - RuntimeCallCounterId::kNamedEnumeratorCallback); - return CallPropertyEnumerator(interceptor); -} - -Handle PropertyCallbackArguments::CallIndexedEnumerator( - Handle interceptor) { - DCHECK(!interceptor->is_named()); - LOG(isolate(), ApiObjectAccess("interceptor-indexed-enumerator", holder())); - RuntimeCallTimerScope timer(isolate(), - RuntimeCallCounterId::kIndexedEnumeratorCallback); - return CallPropertyEnumerator(interceptor); -} - -bool PropertyCallbackArguments::PerformSideEffectCheck(Isolate* isolate, - Address function) { - return isolate->debug()->PerformSideEffectCheckForCallback(function); -} - -} // namespace internal -} // namespace v8 diff --git a/deps/v8/src/api-arguments.h b/deps/v8/src/api-arguments.h index 413a72a3ae4b03..0abbcdcafa091d 100644 --- a/deps/v8/src/api-arguments.h +++ b/deps/v8/src/api-arguments.h @@ -6,6 +6,7 @@ #define V8_API_ARGUMENTS_H_ #include "src/api.h" +#include "src/debug/debug.h" #include "src/isolate.h" #include "src/visitors.h" @@ -15,34 +16,30 @@ namespace internal { // Custom arguments replicate a small segment of stack that can be // accessed through an Arguments object the same way the actual stack // can. -template class CustomArgumentsBase : public Relocatable { - public: - virtual inline void IterateInstance(RootVisitor* v) { - v->VisitRootPointers(Root::kRelocatable, nullptr, values_, - values_ + kArrayLength); - } - protected: - inline Object** begin() { return values_; } explicit inline CustomArgumentsBase(Isolate* isolate) : Relocatable(isolate) {} - Object* values_[kArrayLength]; }; template -class CustomArguments : public CustomArgumentsBase { +class CustomArguments : public CustomArgumentsBase { public: static const int kReturnValueOffset = T::kReturnValueIndex; - typedef CustomArgumentsBase Super; ~CustomArguments() { this->begin()[kReturnValueOffset] = reinterpret_cast(kHandleZapValue); } + virtual inline void IterateInstance(RootVisitor* v) { + v->VisitRootPointers(Root::kRelocatable, nullptr, values_, + values_ + T::kArgsLength); + } + protected: - explicit inline CustomArguments(Isolate* isolate) : Super(isolate) {} + explicit inline CustomArguments(Isolate* isolate) + : CustomArgumentsBase(isolate) {} template Handle GetReturnValue(Isolate* isolate); @@ -50,6 +47,9 @@ class CustomArguments : public CustomArgumentsBase { inline Isolate* isolate() { return reinterpret_cast(this->begin()[T::kIsolateIndex]); } + + inline Object** begin() { return values_; } + Object* values_[T::kArgsLength]; }; template @@ -103,8 +103,9 @@ class PropertyCallbackArguments // ------------------------------------------------------------------------- // Accessor Callbacks // Also used for AccessorSetterCallback. - inline void CallAccessorSetter(Handle info, Handle name, - Handle value); + inline Handle CallAccessorSetter(Handle info, + Handle name, + Handle value); // Also used for AccessorGetterCallback, AccessorNameGetterCallback. inline Handle CallAccessorGetter(Handle info, Handle name); @@ -118,9 +119,6 @@ class PropertyCallbackArguments inline Handle CallNamedSetter(Handle interceptor, Handle name, Handle value); - inline Handle CallNamedSetterCallback( - GenericNamedPropertySetterCallback callback, Handle name, - Handle value); inline Handle CallNamedDefiner(Handle interceptor, Handle name, const v8::PropertyDescriptor& desc); @@ -128,7 +126,8 @@ class PropertyCallbackArguments Handle name); inline Handle CallNamedDescriptor(Handle interceptor, Handle name); - Handle CallNamedEnumerator(Handle interceptor); + inline Handle CallNamedEnumerator( + Handle interceptor); // ------------------------------------------------------------------------- // Indexed Interceptor Callbacks @@ -145,7 +144,8 @@ class PropertyCallbackArguments uint32_t index); inline Handle CallIndexedDescriptor( Handle interceptor, uint32_t index); - Handle CallIndexedEnumerator(Handle interceptor); + inline Handle CallIndexedEnumerator( + Handle interceptor); private: /* @@ -160,16 +160,15 @@ class PropertyCallbackArguments Handle interceptor); inline Handle BasicCallIndexedGetterCallback( - IndexedPropertyGetterCallback f, uint32_t index); + IndexedPropertyGetterCallback f, uint32_t index, Handle info); inline Handle BasicCallNamedGetterCallback( - GenericNamedPropertyGetterCallback f, Handle name); + GenericNamedPropertyGetterCallback f, Handle name, + Handle info); inline JSObject* holder() { return JSObject::cast(this->begin()[T::kHolderIndex]); } - bool PerformSideEffectCheck(Isolate* isolate, Address function); - // Don't copy PropertyCallbackArguments, because they would both have the // same prev_ pointer. DISALLOW_COPY_AND_ASSIGN(PropertyCallbackArguments); @@ -216,7 +215,7 @@ class FunctionCallbackArguments * and used if it's been set to anything inside the callback. * New style callbacks always use the return value. */ - Handle Call(CallHandlerInfo* handler); + inline Handle Call(CallHandlerInfo* handler); private: inline JSObject* holder() { diff --git a/deps/v8/src/api-natives.cc b/deps/v8/src/api-natives.cc index 488b99fd2532db..981f592f5a08ed 100644 --- a/deps/v8/src/api-natives.cc +++ b/deps/v8/src/api-natives.cc @@ -626,7 +626,7 @@ Handle ApiNatives::CreateApiFunction( FunctionTemplateInfo::GetOrCreateSharedFunctionInfo(isolate, obj, maybe_name); // To simplify things, API functions always have shared name. - DCHECK(shared->has_shared_name()); + DCHECK(shared->HasSharedName()); Handle result = isolate->factory()->NewFunctionFromSharedFunctionInfo( diff --git a/deps/v8/src/api-natives.h b/deps/v8/src/api-natives.h index 398f198ae5bd2a..f73e7cee7ea28f 100644 --- a/deps/v8/src/api-natives.h +++ b/deps/v8/src/api-natives.h @@ -21,15 +21,15 @@ class ApiNatives { public: static const int kInitialFunctionCacheSize = 256; - MUST_USE_RESULT static MaybeHandle InstantiateFunction( + V8_WARN_UNUSED_RESULT static MaybeHandle InstantiateFunction( Handle data, MaybeHandle maybe_name = MaybeHandle()); - MUST_USE_RESULT static MaybeHandle InstantiateObject( + V8_WARN_UNUSED_RESULT static MaybeHandle InstantiateObject( Handle data, Handle new_target = Handle()); - MUST_USE_RESULT static MaybeHandle InstantiateRemoteObject( + V8_WARN_UNUSED_RESULT static MaybeHandle InstantiateRemoteObject( Handle data); enum ApiInstanceType { @@ -41,7 +41,7 @@ class ApiNatives { static Handle CreateApiFunction( Isolate* isolate, Handle obj, Handle prototype, ApiInstanceType instance_type, - MaybeHandle maybe_name = MaybeHandle()); + MaybeHandle name = MaybeHandle()); static void AddDataProperty(Isolate* isolate, Handle info, Handle name, Handle value, diff --git a/deps/v8/src/api.cc b/deps/v8/src/api.cc index f5be62058a0f94..8b177d041d447f 100644 --- a/deps/v8/src/api.cc +++ b/deps/v8/src/api.cc @@ -69,6 +69,7 @@ #include "src/snapshot/natives.h" #include "src/snapshot/snapshot.h" #include "src/startup-data-util.h" +#include "src/string-hasher.h" #include "src/tracing/trace-event.h" #include "src/trap-handler/trap-handler.h" #include "src/unicode-cache-inl.h" @@ -307,19 +308,22 @@ static ScriptOrigin GetScriptOriginForScript(i::Isolate* isolate, // --- E x c e p t i o n B e h a v i o r --- - -void i::FatalProcessOutOfMemory(const char* location) { - i::V8::FatalProcessOutOfMemory(location, false); +void i::FatalProcessOutOfMemory(i::Isolate* isolate, const char* location) { + i::V8::FatalProcessOutOfMemory(isolate, location, false); } // When V8 cannot allocate memory FatalProcessOutOfMemory is called. The default // OOM error handler is called and execution is stopped. -void i::V8::FatalProcessOutOfMemory(const char* location, bool is_heap_oom) { - i::Isolate* isolate = i::Isolate::Current(); +void i::V8::FatalProcessOutOfMemory(i::Isolate* isolate, const char* location, + bool is_heap_oom) { char last_few_messages[Heap::kTraceRingBufferSize + 1]; char js_stacktrace[Heap::kStacktraceBufferSize + 1]; i::HeapStats heap_stats; + if (isolate == nullptr) { + isolate = Isolate::Current(); + } + if (isolate == nullptr) { // On a background thread -> we cannot retrieve memory information from the // Isolate. Write easy-to-recognize values on the stack. @@ -329,7 +333,7 @@ void i::V8::FatalProcessOutOfMemory(const char* location, bool is_heap_oom) { // Note that the embedder's oom handler won't be called in this case. We // just crash. FATAL("API fatal error handler returned after process out of memory"); - return; + UNREACHABLE(); } memset(last_few_messages, 0, Heap::kTraceRingBufferSize + 1); @@ -393,7 +397,7 @@ void i::V8::FatalProcessOutOfMemory(const char* location, bool is_heap_oom) { PrintF("\n<--- Last few GCs --->\n%s\n", first_newline); PrintF("\n<--- JS stacktrace --->\n%s\n", js_stacktrace); } - Utils::ReportOOMFailure(location, is_heap_oom); + Utils::ReportOOMFailure(isolate, location, is_heap_oom); // If the fatal error handler returns, we stop execution. FATAL("API fatal error handler returned after process out of memory"); } @@ -415,8 +419,8 @@ void Utils::ReportApiFailure(const char* location, const char* message) { isolate->SignalFatalError(); } -void Utils::ReportOOMFailure(const char* location, bool is_heap_oom) { - i::Isolate* isolate = i::Isolate::Current(); +void Utils::ReportOOMFailure(i::Isolate* isolate, const char* location, + bool is_heap_oom) { OOMErrorCallback oom_callback = isolate->oom_behavior(); if (oom_callback == nullptr) { // TODO(wfh): Remove this fallback once Blink is setting OOM handler. See @@ -704,7 +708,7 @@ StartupData SnapshotCreator::CreateBlob( // context even after we have disposed of the context. isolate->heap()->CollectAllAvailableGarbage( i::GarbageCollectionReason::kSnapshotCreator); - isolate->heap()->CompactWeakFixedArrays(); + isolate->heap()->CompactFixedArraysOfWeakCells(); i::DisallowHeapAllocation no_gc_from_here_on; @@ -728,15 +732,33 @@ StartupData SnapshotCreator::CreateBlob( i::SerializedHandleChecker handle_checker(isolate, &contexts); CHECK(handle_checker.CheckGlobalAndEternalHandles()); - // Complete in-object slack tracking for all functions. i::HeapIterator heap_iterator(isolate->heap()); while (i::HeapObject* current_obj = heap_iterator.next()) { - if (!current_obj->IsJSFunction()) continue; - i::JSFunction* fun = i::JSFunction::cast(current_obj); - fun->CompleteInobjectSlackTrackingIfActive(); + if (current_obj->IsJSFunction()) { + i::JSFunction* fun = i::JSFunction::cast(current_obj); + + // Complete in-object slack tracking for all functions. + fun->CompleteInobjectSlackTrackingIfActive(); + + // Also, clear out feedback vectors. + fun->feedback_cell()->set_value(isolate->heap()->undefined_value()); + } + + // Clear out re-compilable data from all shared function infos. Any + // JSFunctions using these SFIs will have their code pointers reset by the + // partial serializer. + if (current_obj->IsSharedFunctionInfo() && + function_code_handling == FunctionCodeHandling::kClear) { + i::SharedFunctionInfo* shared = i::SharedFunctionInfo::cast(current_obj); + if (shared->CanFlushCompiled()) { + shared->FlushCompiled(); + } + DCHECK(shared->HasCodeObject() || shared->HasBuiltinId() || + shared->IsApiFunction()); + } } - i::StartupSerializer startup_serializer(isolate, function_code_handling); + i::StartupSerializer startup_serializer(isolate); startup_serializer.SerializeStrongReferences(); // Serialize each context with a new partial serializer. @@ -1221,13 +1243,18 @@ static i::Handle EmbedderDataFor(Context* context, if (!Utils::ApiCheck(can_grow, location, "Index too large")) { return i::Handle(); } - int new_size = i::Max(index, data->length() << 1) + 1; + int new_size = index + 1; int grow_by = new_size - data->length(); data = isolate->factory()->CopyFixedArrayAndGrow(data, grow_by); env->set_embedder_data(*data); return data; } +uint32_t Context::GetNumberOfEmbedderDataFields() { + i::Handle context = Utils::OpenHandle(this); + CHECK(context->IsNativeContext()); + return static_cast(context->embedder_data()->length()); +} v8::Local Context::SlowGetEmbedderData(int index) { const char* location = "v8::Context::GetEmbedderData()"; @@ -1375,7 +1402,8 @@ void FunctionTemplate::Inherit(v8::Local value) { static Local FunctionTemplateNew( i::Isolate* isolate, FunctionCallback callback, v8::Local data, v8::Local signature, int length, bool do_not_cache, - v8::Local cached_property_name = v8::Local()) { + v8::Local cached_property_name = v8::Local(), + SideEffectType side_effect_type = SideEffectType::kHasSideEffect) { i::Handle struct_obj = isolate->factory()->NewStruct(i::FUNCTION_TEMPLATE_INFO_TYPE, i::TENURED); i::Handle obj = @@ -1388,7 +1416,7 @@ static Local FunctionTemplateNew( } obj->set_serial_number(i::Smi::FromInt(next_serial_number)); if (callback != 0) { - Utils::ToLocal(obj)->SetCallHandler(callback, data); + Utils::ToLocal(obj)->SetCallHandler(callback, data, side_effect_type); } obj->set_length(length); obj->set_undetectable(false); @@ -1413,8 +1441,8 @@ Local 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, false); + auto templ = FunctionTemplateNew(i_isolate, callback, data, signature, length, + false, Local(), side_effect_type); if (behavior == ConstructorBehavior::kThrow) templ->RemovePrototype(); return templ; } @@ -1442,7 +1470,7 @@ Local FunctionTemplate::NewWithCache( LOG_API(i_isolate, FunctionTemplate, NewWithCache); ENTER_V8_NO_SCRIPT_NO_EXCEPTION(i_isolate); return FunctionTemplateNew(i_isolate, callback, data, signature, length, - false, cache_property); + false, cache_property, side_effect_type); } Local Signature::New(Isolate* isolate, @@ -1470,10 +1498,8 @@ void FunctionTemplate::SetCallHandler(FunctionCallback callback, i::Isolate* isolate = info->GetIsolate(); ENTER_V8_NO_SCRIPT_NO_EXCEPTION(isolate); i::HandleScope scope(isolate); - i::Handle struct_obj = - isolate->factory()->NewStruct(i::TUPLE3_TYPE, i::TENURED); - i::Handle obj = - i::Handle::cast(struct_obj); + i::Handle obj = isolate->factory()->NewCallHandlerInfo( + side_effect_type == SideEffectType::kHasNoSideEffect); SET_FIELD_WRAPPED(obj, set_callback, callback); SET_FIELD_WRAPPED(obj, set_js_callback, obj->redirected_callback()); if (data.IsEmpty()) { @@ -1781,6 +1807,9 @@ static i::Handle CreateInterceptorInfo( static_cast(PropertyHandlerFlags::kAllCanRead)); obj->set_non_masking(static_cast(flags) & static_cast(PropertyHandlerFlags::kNonMasking)); + obj->set_has_no_side_effect( + static_cast(flags) & + static_cast(PropertyHandlerFlags::kHasNoSideEffect)); if (data.IsEmpty()) { data = v8::Undefined(reinterpret_cast(isolate)); @@ -1940,7 +1969,6 @@ void ObjectTemplate::SetHandler( cons->set_indexed_property_handler(*obj); } - void ObjectTemplate::SetCallAsFunctionHandler(FunctionCallback callback, Local data) { i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); @@ -1948,10 +1976,7 @@ void ObjectTemplate::SetCallAsFunctionHandler(FunctionCallback callback, i::HandleScope scope(isolate); auto cons = EnsureConstructor(isolate, this); EnsureNotInstantiated(cons, "v8::ObjectTemplate::SetCallAsFunctionHandler"); - i::Handle struct_obj = - isolate->factory()->NewStruct(i::TUPLE3_TYPE, i::TENURED); - i::Handle obj = - i::Handle::cast(struct_obj); + i::Handle obj = isolate->factory()->NewCallHandlerInfo(); SET_FIELD_WRAPPED(obj, set_callback, callback); SET_FIELD_WRAPPED(obj, set_js_callback, obj->redirected_callback()); if (data.IsEmpty()) { @@ -2374,22 +2399,14 @@ MaybeLocal ScriptCompiler::CompileUnboundInternal( source->host_defined_options); i::MaybeHandle maybe_function_info = i::Compiler::GetSharedFunctionInfoForScript( - str, script_details, source->resource_options, nullptr, &script_data, + str, script_details, source->resource_options, nullptr, script_data, options, no_cache_reason, i::NOT_NATIVES_CODE); - has_pending_exception = !maybe_function_info.ToHandle(&result); - if (has_pending_exception && script_data != nullptr) { - // This case won't happen during normal operation; we have compiled - // successfully and produced cached data, and but the second compilation - // of the same source code fails. - delete script_data; - script_data = nullptr; - } - RETURN_ON_FAILED_EXECUTION(UnboundScript); - if (options == kConsumeCodeCache) { source->cached_data->rejected = script_data->rejected(); } delete script_data; + has_pending_exception = !maybe_function_info.ToHandle(&result); + RETURN_ON_FAILED_EXECUTION(UnboundScript); RETURN_ESCAPED(ToApiHandle(result)); } @@ -2483,6 +2500,10 @@ MaybeLocal ScriptCompiler::CompileFunctionInContext( Function); TRACE_EVENT_CALL_STATS_SCOPED(isolate, "v8", "V8.ScriptCompiler"); + DCHECK(options == CompileOptions::kConsumeCodeCache || + options == CompileOptions::kEagerCompile || + options == CompileOptions::kNoCompileOptions); + i::Handle context = Utils::OpenHandle(*v8_context); i::Handle outer_info(context->closure()->shared(), isolate); @@ -2511,25 +2532,30 @@ MaybeLocal ScriptCompiler::CompileFunctionInContext( extension); } - i::Handle name_obj; - int line_offset = 0; - int column_offset = 0; - if (!source->resource_name.IsEmpty()) { - name_obj = Utils::OpenHandle(*(source->resource_name)); - } - if (!source->resource_line_offset.IsEmpty()) { - line_offset = static_cast(source->resource_line_offset->Value()); - } - if (!source->resource_column_offset.IsEmpty()) { - column_offset = static_cast(source->resource_column_offset->Value()); + i::Compiler::ScriptDetails script_details = GetScriptDetails( + isolate, source->resource_name, source->resource_line_offset, + source->resource_column_offset, source->source_map_url, + source->host_defined_options); + + i::ScriptData* script_data = nullptr; + if (options == kConsumeCodeCache) { + DCHECK(source->cached_data); + // ScriptData takes care of pointer-aligning the data. + script_data = new i::ScriptData(source->cached_data->data, + source->cached_data->length); } i::Handle result; has_pending_exception = !i::Compiler::GetWrappedFunction( Utils::OpenHandle(*source->source_string), arguments_list, context, - line_offset, column_offset, name_obj, source->resource_options) + script_details, source->resource_options, script_data, options, + no_cache_reason) .ToHandle(&result); + if (options == kConsumeCodeCache) { + source->cached_data->rejected = script_data->rejected(); + } + delete script_data; RETURN_ON_FAILED_EXECUTION(Function); RETURN_ESCAPED(Utils::CallableToLocal(result)); } @@ -2603,37 +2629,18 @@ ScriptCompiler::CachedData* ScriptCompiler::CreateCodeCache( i::Handle shared = i::Handle::cast( Utils::OpenHandle(*unbound_script)); - i::Isolate* isolate = shared->GetIsolate(); - TRACE_EVENT_CALL_STATS_SCOPED(isolate, "v8", "V8.Execute"); - base::ElapsedTimer timer; - if (i::FLAG_profile_deserialization) { - timer.Start(); - } - i::HistogramTimerScope histogram_timer( - isolate->counters()->compile_serialize()); - i::RuntimeCallTimerScope runtimeTimer( - isolate, i::RuntimeCallCounterId::kCompileSerialize); - TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"), "V8.CompileSerialize"); - + i::Handle source_str = Utils::OpenHandle(*source); DCHECK(shared->is_toplevel()); - i::Handle script(i::Script::cast(shared->script())); - // TODO(7110): Enable serialization of Asm modules once the AsmWasmData is - // context independent. - if (script->ContainsAsmModule()) return nullptr; - if (isolate->debug()->is_loaded()) return nullptr; - - i::ScriptData* script_data = - i::CodeSerializer::Serialize(isolate, shared, Utils::OpenHandle(*source)); - CachedData* result = new CachedData( - script_data->data(), script_data->length(), CachedData::BufferOwned); - script_data->ReleaseDataOwnership(); - delete script_data; + return i::CodeSerializer::Serialize(shared, source_str); +} - if (i::FLAG_profile_deserialization) { - i::PrintF("[Serializing took %0.3f ms]\n", - timer.Elapsed().InMillisecondsF()); - } - return result; +ScriptCompiler::CachedData* ScriptCompiler::CreateCodeCacheForFunction( + Local function, Local source) { + i::Handle shared( + i::Handle::cast(Utils::OpenHandle(*function))->shared()); + i::Handle source_str = Utils::OpenHandle(*source); + CHECK(shared->is_wrapped()); + return i::CodeSerializer::Serialize(shared, source_str); } MaybeLocal + + @@ -68,13 +70,13 @@ +

V8 Heap Statistics

-

V8 Heap Statistics

Visualize object statistics that have been gathered using

  • --trace-gc-object-stats on V8
  • @@ -85,6 +87,10 @@

    V8 Heap Statistics

    v8.gc_stats.
+

+ Note that you only get a data point on major GCs. You can enforce this by + using the --gc-global flag. +

Note that the visualizer needs to run on a web server due to HTML imports requiring this.finalizeGC(gc)); + this.sortInstanceTypePeakMemory(); } getLabel() { let label = `${this.address}: gc=#${Object.keys(this.gcs).length}`; - const peakSizeMB = Math.round(this.peakMemory / 1024 / 1024 * 100) / 100; - label += ` max=${peakSizeMB}MB` + label += ` peak=${formatBytes(this.peakMemory)}` return label; } finalizeGC(gc_data) { this.data_sets.forEach(key => this.finalizeDataSet(gc_data[key])); - if ('live' in gc_data) { - this.peakMemory = Math.max(this.peakMemory, gc_data['live'].overall); + if (!('live' in gc_data)) return; + let liveData = gc_data.live; + this.peakMemory = Math.max(this.peakMemory, liveData.overall); + let data = liveData.instance_type_data; + for (let name in data) { + let prev = this.instanceTypePeakMemory[name] || 0; + this.instanceTypePeakMemory[name] = Math.max(prev, data[name].overall); } } finalizeDataSet(data_set) { // Create a ranked instance type array that sorts instance types by // memory size (overall). - data_set.ranked_instance_types = - [...data_set.non_empty_instance_types].sort(function(a, b) { - if (data_set.instance_type_data[a].overall > - data_set.instance_type_data[b].overall) { - return 1; - } else if ( - data_set.instance_type_data[a].overall < - data_set.instance_type_data[b].overall) { - return -1; - } - return 0; + let data = data_set.instance_type_data; + let ranked_instance_types = + [...data_set.non_empty_instance_types].sort((a, b) => { + return data[a].overall - data[b].overall; }); + // Reassemble the instance_type list sorted by size. + let sorted_data = Object.create(null); + let max = 0; + ranked_instance_types.forEach((name) => { + let entry = sorted_data[name] = data[name]; + max = Math.max(max, entry.overall); + }); + data_set.instance_type_data = data; + data_set.singleInstancePeakMemory = max; Object.entries(data_set.instance_type_data).forEach(([name, entry]) => { this.checkHistogram( @@ -74,4 +85,21 @@ class Isolate { `${type}: sum('${histogram}') > overall (${sum} > ${overall})`); } } + + sortInstanceTypePeakMemory() { + let entries = Object.entries(this.instanceTypePeakMemory); + entries.sort((a, b) => {return b[1] - a[1]}); + this.instanceTypePeakMemory = Object.create(null); + let max = 0; + for (let [key, value] of entries) { + this.instanceTypePeakMemory[key] = value; + max = Math.max(max, value); + } + this.singleInstanceTypePeakMemory = max; + } + + getInstanceTypePeakMemory(type) { + if (!(type in this.instanceTypePeakMemory)) return 0; + return this.instanceTypePeakMemory[type]; + } } diff --git a/deps/v8/tools/heap-stats/trace-file-reader.html b/deps/v8/tools/heap-stats/trace-file-reader.html index 73de98ab03f70e..649d32bb40655c 100644 --- a/deps/v8/tools/heap-stats/trace-file-reader.html +++ b/deps/v8/tools/heap-stats/trace-file-reader.html @@ -11,6 +11,16 @@ border: solid 1px #000000; border-radius: 5px; cursor: pointer; + transition: all 0.5s ease-in-out; +} + +#fileReader.done { + height: 20px; + line-height: 20px; +} + +#fileReader:hover { + background-color: #e0edfe ; } .loading #fileReader { @@ -21,11 +31,12 @@ display: none; } + #loader { display: none; } -.loading #loader{ +.loading #loader { display: block; position: fixed; top: 0px; @@ -51,7 +62,7 @@ @keyframes spin { 0% { transform: rotate(0deg); - }; + }; 100% { transform: rotate(360deg); }; @@ -59,7 +70,7 @@

-
+
Drag and drop a trace file into this area, or click to choose from disk. diff --git a/deps/v8/tools/heap-stats/trace-file-reader.js b/deps/v8/tools/heap-stats/trace-file-reader.js index ef563a43cb35ed..4ad1269835b095 100644 --- a/deps/v8/tools/heap-stats/trace-file-reader.js +++ b/deps/v8/tools/heap-stats/trace-file-reader.js @@ -17,6 +17,7 @@ class TraceFileReader extends HTMLElement { this.addEventListener('dragover', e => this.handleDragOver(e)); this.addEventListener('drop', e => this.handleChange(e)); this.$('#file').addEventListener('change', e => this.handleChange(e)); + this.$('#fileReader').addEventListener('keydown', e => this.handleKeyEvent(e)); } $(id) { @@ -31,6 +32,10 @@ class TraceFileReader extends HTMLElement { this.$('#label').innerText = text; } + handleKeyEvent(event) { + if (event.key == "Enter") this.handleClick(event); + } + handleClick(event) { this.$('#file').click(); } @@ -46,13 +51,16 @@ class TraceFileReader extends HTMLElement { event.preventDefault(); } - connectedCallback() {} + connectedCallback() { + this.$('#fileReader').focus(); + } readFile(file) { if (!file) { this.updateLabel('Failed to load file.'); return; } + this.$('#fileReader').blur(); this.section.className = 'loading'; const reader = new FileReader(); @@ -63,15 +71,17 @@ class TraceFileReader extends HTMLElement { const textResult = pako.inflate(e.target.result, {to: 'string'}); this.processRawText(file, textResult); this.section.className = 'success'; + this.$('#fileReader').classList.add('done'); } catch (err) { console.error(err); this.section.className = 'failure'; } }; - reader.readAsArrayBuffer(file); + // Delay the loading a bit to allow for CSS animations to happen. + setTimeout(() => reader.readAsArrayBuffer(file), 10); } else { reader.onload = (e) => this.processRawText(file, e.target.result); - reader.readAsText(file); + setTimeout(() => reader.readAsText(file), 10); } } @@ -96,10 +106,12 @@ class TraceFileReader extends HTMLElement { data_object.gcs[entry.id] = {non_empty_instance_types: new Set()}; } if ('time' in entry) { - if (data_object.end === null || data_object.end < entry.time) + if (data_object.end === null || data_object.end < entry.time) { data_object.end = entry.time; - if (data_object.start === null || data_object.start > entry.time) + } + if (data_object.start === null || data_object.start > entry.time) { data_object.start = entry.time; + } } } diff --git a/deps/v8/tools/ic-processor.js b/deps/v8/tools/ic-processor.js index 93f40b38a08634..9a78d16943f019 100644 --- a/deps/v8/tools/ic-processor.js +++ b/deps/v8/tools/ic-processor.js @@ -56,6 +56,9 @@ function IcProcessor() { 'KeyedStoreIC': { parsers : propertyICParser, processor: this.processPropertyIC.bind(this, "KeyedStoreIC") }, + 'StoreInArrayLiteralIC': { + parsers : propertyICParser, + processor: this.processPropertyIC.bind(this, "StoreInArrayLiteralIC") }, }); this.deserializedEntriesNames_ = []; this.profile_ = new Profile(); @@ -64,6 +67,7 @@ function IcProcessor() { this.StoreIC = 0; this.KeyedLoadIC = 0; this.KeyedStoreIC = 0; + this.StoreInArrayLiteralIC = 0; } inherits(IcProcessor, LogReader); @@ -104,6 +108,7 @@ IcProcessor.prototype.processLogFile = function(fileName) { print("Store: " + this.StoreIC); print("KeyedLoad: " + this.KeyedLoadIC); print("KeyedStore: " + this.KeyedStoreIC); + print("StoreInArrayLiteral: " + this.StoreInArrayLiteralIC); }; IcProcessor.prototype.addEntry = function(entry) { diff --git a/deps/v8/tools/isolate_driver.py b/deps/v8/tools/isolate_driver.py deleted file mode 100644 index 32077e236f5be1..00000000000000 --- a/deps/v8/tools/isolate_driver.py +++ /dev/null @@ -1,340 +0,0 @@ -#!/usr/bin/env python -# Copyright 2015 the V8 project authors. All rights reserved. -# Copyright 2014 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -"""Adaptor script called through gni/isolate.gni. - -Creates a wrapping .isolate which 'includes' the original one, that can be -consumed by tools/swarming_client/isolate.py. Path variables are determined -based on the current working directory. The relative_cwd in the .isolated file -is determined based on the .isolate file that declare the 'command' variable to -be used so the wrapping .isolate doesn't affect this value. - -This script loads build.ninja and processes it to determine all the executables -referenced by the isolated target. It adds them in the wrapping .isolate file. - -WARNING: The target to use for build.ninja analysis is the base name of the -.isolate file plus '_run'. For example, 'foo_test.isolate' would have the target -'foo_test_run' analysed. -""" - -import errno -import glob -import json -import logging -import os -import posixpath -import StringIO -import subprocess -import sys -import time - -TOOLS_DIR = os.path.dirname(os.path.abspath(__file__)) -SWARMING_CLIENT_DIR = os.path.join(TOOLS_DIR, 'swarming_client') -SRC_DIR = os.path.dirname(TOOLS_DIR) - -sys.path.insert(0, SWARMING_CLIENT_DIR) - -import isolate_format - - -def load_ninja_recursively(build_dir, ninja_path, build_steps): - """Crudely extracts all the subninja and build referenced in ninja_path. - - In particular, it ignores rule and variable declarations. The goal is to be - performant (well, as much as python can be performant) which is currently in - the <200ms range for a complete chromium tree. As such the code is laid out - for performance instead of readability. - """ - logging.debug('Loading %s', ninja_path) - try: - with open(os.path.join(build_dir, ninja_path), 'rb') as f: - line = None - merge_line = '' - subninja = [] - for line in f: - line = line.rstrip() - if not line: - continue - - if line[-1] == '$': - # The next line needs to be merged in. - merge_line += line[:-1] - continue - - if merge_line: - line = merge_line + line - merge_line = '' - - statement = line[:line.find(' ')] - if statement == 'build': - # Save the dependency list as a raw string. Only the lines needed will - # be processed with raw_build_to_deps(). This saves a good 70ms of - # processing time. - build_target, dependencies = line[6:].split(': ', 1) - # Interestingly, trying to be smart and only saving the build steps - # with the intended extensions ('', '.stamp', '.so') slows down - # parsing even if 90% of the build rules can be skipped. - # On Windows, a single step may generate two target, so split items - # accordingly. It has only been seen for .exe/.exe.pdb combos. - for i in build_target.strip().split(): - build_steps[i] = dependencies - elif statement == 'subninja': - subninja.append(line[9:]) - except IOError: - print >> sys.stderr, 'Failed to open %s' % ninja_path - raise - - total = 1 - for rel_path in subninja: - try: - # Load each of the files referenced. - # TODO(maruel): Skip the files known to not be needed. It saves an aweful - # lot of processing time. - total += load_ninja_recursively(build_dir, rel_path, build_steps) - except IOError: - print >> sys.stderr, '... as referenced by %s' % ninja_path - raise - return total - - -def load_ninja(build_dir): - """Loads the tree of .ninja files in build_dir.""" - build_steps = {} - total = load_ninja_recursively(build_dir, 'build.ninja', build_steps) - logging.info('Loaded %d ninja files, %d build steps', total, len(build_steps)) - return build_steps - - -def using_blacklist(item): - """Returns True if an item should be analyzed. - - Ignores many rules that are assumed to not depend on a dynamic library. If - the assumption doesn't hold true anymore for a file format, remove it from - this list. This is simply an optimization. - """ - # *.json is ignored below, *.isolated.gen.json is an exception, it is produced - # by isolate_driver.py in 'test_isolation_mode==prepare'. - if item.endswith('.isolated.gen.json'): - return True - IGNORED = ( - '.a', '.cc', '.css', '.dat', '.def', '.frag', '.h', '.html', '.isolate', - '.js', '.json', '.manifest', '.o', '.obj', '.pak', '.png', '.pdb', '.py', - '.strings', '.test', '.txt', '.vert', - ) - # ninja files use native path format. - ext = os.path.splitext(item)[1] - if ext in IGNORED: - return False - # Special case Windows, keep .dll.lib but discard .lib. - if item.endswith('.dll.lib'): - return True - if ext == '.lib': - return False - return item not in ('', '|', '||') - - -def raw_build_to_deps(item): - """Converts a raw ninja build statement into the list of interesting - dependencies. - """ - # TODO(maruel): Use a whitelist instead? .stamp, .so.TOC, .dylib.TOC, - # .dll.lib, .exe and empty. - # The first item is the build rule, e.g. 'link', 'cxx', 'phony', etc. - return filter(using_blacklist, item.split(' ')[1:]) - - -def collect_deps(target, build_steps, dependencies_added, rules_seen): - """Recursively adds all the interesting dependencies for |target| - into |dependencies_added|. - """ - if rules_seen is None: - rules_seen = set() - if target in rules_seen: - # TODO(maruel): Figure out how it happens. - logging.warning('Circular dependency for %s!', target) - return - rules_seen.add(target) - try: - dependencies = raw_build_to_deps(build_steps[target]) - except KeyError: - logging.info('Failed to find a build step to generate: %s', target) - return - logging.debug('collect_deps(%s) -> %s', target, dependencies) - for dependency in dependencies: - dependencies_added.add(dependency) - collect_deps(dependency, build_steps, dependencies_added, rules_seen) - - -def post_process_deps(build_dir, dependencies): - """Processes the dependency list with OS specific rules.""" - def filter_item(i): - if i.endswith('.so.TOC'): - # Remove only the suffix .TOC, not the .so! - return i[:-4] - if i.endswith('.dylib.TOC'): - # Remove only the suffix .TOC, not the .dylib! - return i[:-4] - if i.endswith('.dll.lib'): - # Remove only the suffix .lib, not the .dll! - return i[:-4] - return i - - def is_exe(i): - # This script is only for adding new binaries that are created as part of - # the component build. - ext = os.path.splitext(i)[1] - # On POSIX, executables have no extension. - if ext not in ('', '.dll', '.dylib', '.exe', '.nexe', '.so'): - return False - if os.path.isabs(i): - # In some rare case, there's dependency set explicitly on files outside - # the checkout. - return False - - # Check for execute access and strip directories. This gets rid of all the - # phony rules. - p = os.path.join(build_dir, i) - return os.access(p, os.X_OK) and not os.path.isdir(p) - - return filter(is_exe, map(filter_item, dependencies)) - - -def create_wrapper(args, isolate_index, isolated_index): - """Creates a wrapper .isolate that add dynamic libs. - - The original .isolate is not modified. - """ - cwd = os.getcwd() - isolate = args[isolate_index] - # The code assumes the .isolate file is always specified path-less in cwd. Fix - # if this assumption doesn't hold true. - assert os.path.basename(isolate) == isolate, isolate - - # This will look like ../out/Debug. This is based against cwd. Note that this - # must equal the value provided as PRODUCT_DIR. - build_dir = os.path.dirname(args[isolated_index]) - - # This will look like chrome/unit_tests.isolate. It is based against SRC_DIR. - # It's used to calculate temp_isolate. - src_isolate = os.path.relpath(os.path.join(cwd, isolate), SRC_DIR) - - # The wrapping .isolate. This will look like - # ../out/Debug/gen/chrome/unit_tests.isolate. - temp_isolate = os.path.join(build_dir, 'gen', src_isolate) - temp_isolate_dir = os.path.dirname(temp_isolate) - - # Relative path between the new and old .isolate file. - isolate_relpath = os.path.relpath( - '.', temp_isolate_dir).replace(os.path.sep, '/') - - # It's a big assumption here that the name of the isolate file matches the - # primary target '_run'. Fix accordingly if this doesn't hold true, e.g. - # complain to maruel@. - target = isolate[:-len('.isolate')] + '_run' - build_steps = load_ninja(build_dir) - binary_deps = set() - collect_deps(target, build_steps, binary_deps, None) - binary_deps = post_process_deps(build_dir, binary_deps) - logging.debug( - 'Binary dependencies:%s', ''.join('\n ' + i for i in binary_deps)) - - # Now do actual wrapping .isolate. - isolate_dict = { - 'includes': [ - posixpath.join(isolate_relpath, isolate), - ], - 'variables': { - # Will look like ['<(PRODUCT_DIR)/lib/flibuser_prefs.so']. - 'files': sorted( - '<(PRODUCT_DIR)/%s' % i.replace(os.path.sep, '/') - for i in binary_deps), - }, - } - # Some .isolate files have the same temp directory and the build system may - # run this script in parallel so make directories safely here. - try: - os.makedirs(temp_isolate_dir) - except OSError as e: - if e.errno != errno.EEXIST: - raise - comment = ( - '# Warning: this file was AUTOGENERATED.\n' - '# DO NO EDIT.\n') - out = StringIO.StringIO() - isolate_format.print_all(comment, isolate_dict, out) - isolate_content = out.getvalue() - with open(temp_isolate, 'wb') as f: - f.write(isolate_content) - logging.info('Added %d dynamic libs', len(binary_deps)) - logging.debug('%s', isolate_content) - args[isolate_index] = temp_isolate - - -def prepare_isolate_call(args, output): - """Gathers all information required to run isolate.py later. - - Dumps it as JSON to |output| file. - """ - with open(output, 'wb') as f: - json.dump({ - 'args': args, - 'dir': os.getcwd(), - 'version': 1, - }, f, indent=2, sort_keys=True) - - -def rebase_directories(args, abs_base): - """Rebases all paths to be relative to abs_base.""" - def replace(index): - args[index] = os.path.relpath(os.path.abspath(args[index]), abs_base) - for i, arg in enumerate(args): - if arg in ['--isolate', '--isolated']: - replace(i + 1) - if arg == '--path-variable': - # Path variables have a triple form: --path-variable NAME . - replace(i + 2) - - -def main(): - logging.basicConfig(level=logging.ERROR, format='%(levelname)7s %(message)s') - args = sys.argv[1:] - mode = args[0] if args else None - isolate = None - isolated = None - for i, arg in enumerate(args): - if arg == '--isolate': - isolate = i + 1 - if arg == '--isolated': - isolated = i + 1 - if isolate is None or isolated is None or not mode: - print >> sys.stderr, 'Internal failure' - return 1 - - # Make sure all paths are relative to the isolate file. This is an - # expectation of the go binaries. In gn, this script is not called - # relative to the isolate file, but relative to the product dir. - new_base = os.path.abspath(os.path.dirname(args[isolate])) - rebase_directories(args, new_base) - assert args[isolate] == os.path.basename(args[isolate]) - os.chdir(new_base) - - create_wrapper(args, isolate, isolated) - - # In 'prepare' mode just collect all required information for postponed - # isolated.py invocation later, store it in *.isolated.gen.json file. - if mode == 'prepare': - prepare_isolate_call(args[1:], args[isolated] + '.gen.json') - return 0 - - swarming_client = os.path.join(SRC_DIR, 'tools', 'swarming_client') - sys.stdout.flush() - result = subprocess.call( - [sys.executable, os.path.join(swarming_client, 'isolate.py')] + args) - return result - - -if __name__ == '__main__': - sys.exit(main()) diff --git a/deps/v8/tools/jsfunfuzz/BUILD.gn b/deps/v8/tools/jsfunfuzz/BUILD.gn new file mode 100644 index 00000000000000..3c40460f8db743 --- /dev/null +++ b/deps/v8/tools/jsfunfuzz/BUILD.gn @@ -0,0 +1,19 @@ +# 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. + +import("../../gni/v8.gni") + +group("v8_jsfunfuzz") { + testonly = true + + data_deps = [ + "../..:d8", + ] + + data = [ + # Grab current directory. This avoids adding logic for checking the + # existence of the jsfunfuzz subdirectory. + "./", + ] +} diff --git a/deps/v8/tools/jsfunfuzz/jsfunfuzz.isolate b/deps/v8/tools/jsfunfuzz/jsfunfuzz.isolate deleted file mode 100644 index 56cb4a733f3052..00000000000000 --- a/deps/v8/tools/jsfunfuzz/jsfunfuzz.isolate +++ /dev/null @@ -1,18 +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. -{ - 'variables': { - 'command': [ - 'fuzz-harness.sh', - ], - 'files': [ - # Grab current directory. This avoids adding logic for checking the - # existence of the jsfunfuzz subdirectory. - './', - ], - }, - 'includes': [ - '../../src/d8.isolate', - ], -} diff --git a/deps/v8/tools/mb/mb.py b/deps/v8/tools/mb/mb.py index b97ce455c2513f..b2ae0c763f6a15 100755 --- a/deps/v8/tools/mb/mb.py +++ b/deps/v8/tools/mb/mb.py @@ -233,10 +233,6 @@ def AddCommonOptions(subp): self.args = parser.parse_args(argv) - # TODO(machenbach): This prepares passing swarming targets to isolate on the - # infra side. - self.args.swarming_targets_file = None - def DumpInputFiles(self): def DumpContentsOfFilePassedTo(arg_name, path): @@ -393,7 +389,7 @@ def _DefaultDimensions(self): elif self.platform.startswith('linux'): os_dim = ('os', 'Ubuntu-14.04') elif self.platform == 'win32': - os_dim = ('os', 'Windows-10-14393') + os_dim = ('os', 'Windows-10') else: raise MBErr('unrecognized platform string "%s"' % self.platform) diff --git a/deps/v8/tools/mb/mb_unittest.py b/deps/v8/tools/mb/mb_unittest.py index 0413457eab2999..dbd599645d6752 100755 --- a/deps/v8/tools/mb/mb_unittest.py +++ b/deps/v8/tools/mb/mb_unittest.py @@ -360,8 +360,6 @@ def test_gen_fails(self): mbw.Call = lambda cmd, env=None, buffer_output=True: (1, '', '') self.check(['gen', '-c', 'debug_goma', '//out/Default'], mbw=mbw, ret=1) - # TODO(machenbach): Comment back in after swarming file parameter is used. - """ def test_gen_swarming(self): files = { '/tmp/swarming_targets': 'base_unittests\n', @@ -549,7 +547,6 @@ def run_stub(cmd, **_kwargs): 'base_unittests'], mbw=mbw, ret=0) self.check(['run', '-s', '-c', 'debug_goma', '-d', 'os', 'Win7', '//out/Default', 'base_unittests'], mbw=mbw, ret=0) - """ # pylint: disable=pointless-string-statement def test_lookup(self): self.check(['lookup', '-c', 'debug_goma'], ret=0) diff --git a/deps/v8/tools/node/fetch_deps.py b/deps/v8/tools/node/fetch_deps.py index 09a4e6cb97c8aa..945dbb7677f4f3 100755 --- a/deps/v8/tools/node/fetch_deps.py +++ b/deps/v8/tools/node/fetch_deps.py @@ -22,10 +22,10 @@ "managed" : False, "custom_deps" : { # These deps are already part of Node.js. - "v8/base/trace_event/common" : None, - "v8/testing/gtest" : None, - "v8/third_party/jinja2" : None, - "v8/third_party/markupsafe" : None, + "v8/base/trace_event/common" : None, + "v8/third_party/googletest/src" : None, + "v8/third_party/jinja2" : None, + "v8/third_party/markupsafe" : None, # These deps are unnecessary for building. "v8/test/benchmarks/data" : None, "v8/testing/gmock" : None, @@ -36,7 +36,6 @@ "v8/third_party/catapult" : None, "v8/third_party/colorama/src" : None, "v8/third_party/instrumented_libraries" : None, - "v8/tools/gyp" : None, "v8/tools/luci-go" : None, "v8/tools/swarming_client" : None, }, @@ -72,10 +71,11 @@ def FetchDeps(v8_path): env = os.environ.copy() # gclient needs to have depot_tools in the PATH. env["PATH"] = depot_tools + os.pathsep + env["PATH"] + gclient = os.path.join(depot_tools, "gclient.py") spec = "solutions = %s" % GCLIENT_SOLUTION - subprocess.check_call(["gclient", "sync", "--spec", spec], - cwd=os.path.join(v8_path, os.path.pardir), - env=env) + subprocess.check_call([sys.executable, gclient, "sync", "--spec", spec], + cwd=os.path.join(v8_path, os.path.pardir), + env=env) except: raise finally: diff --git a/deps/v8/tools/node/node_common.py b/deps/v8/tools/node/node_common.py index f7ca3a6a79c59b..72fbd9641aa44b 100755 --- a/deps/v8/tools/node/node_common.py +++ b/deps/v8/tools/node/node_common.py @@ -15,9 +15,8 @@ def EnsureDepotTools(v8_path, fetch_if_not_exist): def _Get(v8_path): depot_tools = os.path.join(v8_path, "_depot_tools") try: - gclient_path = os.path.join(depot_tools, "gclient") - gclient_check = subprocess.check_output([gclient_path, "--version"]) - if "gclient.py" in gclient_check: + gclient_path = os.path.join(depot_tools, "gclient.py") + if os.path.isfile(gclient_path): return depot_tools except: pass diff --git a/deps/v8/tools/node/test_update_node.py b/deps/v8/tools/node/test_update_node.py index 1a29b4ea619976..785517b8c85900 100755 --- a/deps/v8/tools/node/test_update_node.py +++ b/deps/v8/tools/node/test_update_node.py @@ -18,12 +18,16 @@ # Expectations. EXPECTED_GITIGNORE = """ -/testing/gtest/* -!/testing/gtest/include -/testing/gtest/include/* -!/testing/gtest/include/gtest -/testing/gtest/include/gtest/* -!/testing/gtest/include/gtest/gtest_prod.h +/third_party/googletest/* +!/third_party/googletest/src +/third_party/googletest/src/* +!/third_party/googletest/src/googletest +/third_party/googletest/src/googletest/* +!/third_party/googletest/src/googletest/include +/third_party/googletest/src/googletest/include/* +!/third_party/googletest/src/googletest/include/gtest +/third_party/googletest/src/googletest/include/gtest/* +!/third_party/googletest/src/googletest/include/gtest/gtest_prod.h !/third_party/jinja2 !/third_party/markupsafe /unrelated @@ -34,6 +38,7 @@ rename deps/v8/baz/{delete_me => v8_new} (100%) delete mode 100644 deps/v8/include/v8-version.h rename deps/v8/{delete_me => new/v8_new} (100%) + create mode 100644 deps/v8/third_party/googletest/src/googletest/include/gtest/gtest_prod.h create mode 100644 deps/v8/third_party/jinja2/jinja2 create mode 100644 deps/v8/third_party/markupsafe/markupsafe create mode 100644 deps/v8/v8_new @@ -43,9 +48,9 @@ 'v8_new', 'new/v8_new', 'baz/v8_new', - 'testing/gtest/gtest_new', - 'testing/gtest/new/gtest_new', - 'testing/gtest/baz/gtest_new', + '/third_party/googletest/src/googletest/include/gtest/gtest_new', + '/third_party/googletest/src/googletest/include/gtest/new/gtest_new', + '/third_party/googletest/src/googletest/include/gtest/baz/gtest_new', 'third_party/jinja2/jinja2', 'third_party/markupsafe/markupsafe' ] diff --git a/deps/v8/tools/node/testdata/v8/.gitignore b/deps/v8/tools/node/testdata/v8/.gitignore index 855286229f8dea..cc2f1ca20223bd 100644 --- a/deps/v8/tools/node/testdata/v8/.gitignore +++ b/deps/v8/tools/node/testdata/v8/.gitignore @@ -1,4 +1,3 @@ /unrelated -/testing/gtest /third_party/jinja2 -/third_party/markupsafe \ No newline at end of file +/third_party/markupsafe diff --git a/deps/v8/tools/node/testdata/v8/testing/gtest/baz/gtest_foo b/deps/v8/tools/node/testdata/v8/testing/gtest/baz/gtest_foo new file mode 100644 index 00000000000000..eb1ae458f8ee6e --- /dev/null +++ b/deps/v8/tools/node/testdata/v8/testing/gtest/baz/gtest_foo @@ -0,0 +1 @@ +... diff --git a/deps/v8/tools/node/testdata/v8/testing/gtest/baz/gtest_new b/deps/v8/tools/node/testdata/v8/testing/gtest/baz/gtest_new new file mode 100644 index 00000000000000..eb1ae458f8ee6e --- /dev/null +++ b/deps/v8/tools/node/testdata/v8/testing/gtest/baz/gtest_new @@ -0,0 +1 @@ +... diff --git a/deps/v8/tools/node/testdata/v8/testing/gtest/gtest_bar b/deps/v8/tools/node/testdata/v8/testing/gtest/gtest_bar new file mode 100644 index 00000000000000..eb1ae458f8ee6e --- /dev/null +++ b/deps/v8/tools/node/testdata/v8/testing/gtest/gtest_bar @@ -0,0 +1 @@ +... diff --git a/deps/v8/tools/node/testdata/v8/testing/gtest/gtest_new b/deps/v8/tools/node/testdata/v8/testing/gtest/gtest_new new file mode 100644 index 00000000000000..eb1ae458f8ee6e --- /dev/null +++ b/deps/v8/tools/node/testdata/v8/testing/gtest/gtest_new @@ -0,0 +1 @@ +... diff --git a/deps/v8/tools/node/testdata/v8/testing/gtest/new/gtest_new b/deps/v8/tools/node/testdata/v8/testing/gtest/new/gtest_new new file mode 100644 index 00000000000000..eb1ae458f8ee6e --- /dev/null +++ b/deps/v8/tools/node/testdata/v8/testing/gtest/new/gtest_new @@ -0,0 +1 @@ +... diff --git a/deps/v8/tools/node/update_node.py b/deps/v8/tools/node/update_node.py index 5d7e4daff4eabf..759e9d5aac72e2 100755 --- a/deps/v8/tools/node/update_node.py +++ b/deps/v8/tools/node/update_node.py @@ -34,23 +34,28 @@ TARGET_SUBDIR = os.path.join("deps", "v8") SUB_REPOSITORIES = [ ["base", "trace_event", "common"], - ["testing", "gtest"], + ["third_party", "googletest", "src"], ["third_party", "jinja2"], ["third_party", "markupsafe"] ] DELETE_FROM_GITIGNORE = [ "/base", - "/testing/gtest", + "/third_party/googletest/src", "/third_party/jinja2", "/third_party/markupsafe" ] # Node.js requires only a single header file from gtest to build V8. # Both jinja2 and markupsafe are required to generate part of the inspector. -ADD_TO_GITIGNORE = [ "/testing/gtest/*", - "!/testing/gtest/include", - "/testing/gtest/include/*", - "!/testing/gtest/include/gtest", - "/testing/gtest/include/gtest/*", - "!/testing/gtest/include/gtest/gtest_prod.h", +ADD_TO_GITIGNORE = [ "/third_party/googletest/*", + "!/third_party/googletest/BUILD.gn", + "!/third_party/googletest/src", + "/third_party/googletest/src/*", + "!/third_party/googletest/src/googletest", + "/third_party/googletest/src/googletest/*", + "!/third_party/googletest/src/googletest/include", + "/third_party/googletest/src/googletest/include/*", + "!/third_party/googletest/src/googletest/include/gtest", + "/third_party/googletest/src/googletest/include/gtest/*", + "!/third_party/googletest/src/googletest/include/gtest/gtest_prod.h", "!/third_party/jinja2", "!/third_party/markupsafe" ] diff --git a/deps/v8/tools/predictable_wrapper.py b/deps/v8/tools/predictable_wrapper.py index cf7bf00b3f6fab..c357c13b41b8bd 100644 --- a/deps/v8/tools/predictable_wrapper.py +++ b/deps/v8/tools/predictable_wrapper.py @@ -19,6 +19,7 @@ from testrunner.local import command MAX_TRIES = 3 +TIMEOUT = 120 def main(args): def allocation_str(stdout): @@ -27,7 +28,7 @@ def allocation_str(stdout): return line return None - cmd = command.Command(args[0], args[1:]) + cmd = command.Command(args[0], args[1:], timeout=TIMEOUT) previous_allocations = None for run in range(1, MAX_TRIES + 1): diff --git a/deps/v8/tools/presubmit.py b/deps/v8/tools/presubmit.py index 917b6e2383094e..29469be7589dc5 100755 --- a/deps/v8/tools/presubmit.py +++ b/deps/v8/tools/presubmit.py @@ -60,7 +60,9 @@ -build/header_guard -build/include_what_you_use -readability/fn_size +-readability/multiline_comment -runtime/references +-whitespace/comments """.split() LINT_OUTPUT_PATTERN = re.compile(r'^.+[:(]\d+[:)]|^Done processing') diff --git a/deps/v8/tools/release/auto_roll.py b/deps/v8/tools/release/auto_roll.py index b27675e60c86aa..ea83bfcd36dc8e 100755 --- a/deps/v8/tools/release/auto_roll.py +++ b/deps/v8/tools/release/auto_roll.py @@ -20,7 +20,7 @@ https://v8-roll.appspot.com/ This only works with a Google account. -CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel""") +CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel;luci.chromium.try:android_optional_gpu_tests_rel""") class Preparation(Step): MESSAGE = "Preparation." @@ -40,7 +40,7 @@ def RunStep(self): self["last_roll"] = self._options.last_roll if not self["last_roll"]: # Interpret the DEPS file to retrieve the v8 revision. - # TODO(machenbach): This should be part or the roll-deps api of + # TODO(machenbach): This should be part or the setdep api of # depot_tools. Var = lambda var: '%s' exec(FileToText(os.path.join(self._options.chromium, "DEPS"))) @@ -140,7 +140,7 @@ def RunStep(self): self['json_output']['monitoring_state'] = 'upload' cwd = self._options.chromium # Patch DEPS file. - if self.Command("roll-dep-svn", "v8 %s" % + if self.Command("gclient", "setdep -r src/v8@%s" % self["roll"], cwd=cwd) is None: self.Die("Failed to create deps for %s" % self["roll"]) diff --git a/deps/v8/tools/release/test_scripts.py b/deps/v8/tools/release/test_scripts.py index 759012d83348ca..25aa803daf23ae 100755 --- a/deps/v8/tools/release/test_scripts.py +++ b/deps/v8/tools/release/test_scripts.py @@ -1037,7 +1037,7 @@ def CheckVersionCommit(): https://v8-roll.appspot.com/ This only works with a Google account. -CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel +CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel;luci.chromium.try:android_optional_gpu_tests_rel TBR=reviewer@chromium.org""" @@ -1113,7 +1113,8 @@ def WriteDeps(): Cmd("git pull", "", cwd=chrome_dir), Cmd("git fetch origin", ""), Cmd("git new-branch work-branch", "", cwd=chrome_dir), - Cmd("roll-dep-svn v8 roll_hsh", "rolled", cb=WriteDeps, cwd=chrome_dir), + Cmd("gclient setdep -r src/v8@roll_hsh", "", cb=WriteDeps, + cwd=chrome_dir), Cmd(("git commit -am \"%s\" " "--author \"author@chromium.org \"" % self.ROLL_COMMIT_MSG), diff --git a/deps/v8/tools/release/testdata/v8/third_party/googletest/src/googletest/include/gtest/baz/gtest_new b/deps/v8/tools/release/testdata/v8/third_party/googletest/src/googletest/include/gtest/baz/gtest_new new file mode 100644 index 00000000000000..e69de29bb2d1d6 diff --git a/deps/v8/tools/release/testdata/v8/third_party/googletest/src/googletest/include/gtest/gtest_new b/deps/v8/tools/release/testdata/v8/third_party/googletest/src/googletest/include/gtest/gtest_new new file mode 100644 index 00000000000000..e69de29bb2d1d6 diff --git a/deps/v8/tools/release/testdata/v8/third_party/googletest/src/googletest/include/gtest/gtest_prod.h b/deps/v8/tools/release/testdata/v8/third_party/googletest/src/googletest/include/gtest/gtest_prod.h new file mode 100644 index 00000000000000..847c8bc75ed4fd --- /dev/null +++ b/deps/v8/tools/release/testdata/v8/third_party/googletest/src/googletest/include/gtest/gtest_prod.h @@ -0,0 +1 @@ +gtest_prod diff --git a/deps/v8/tools/release/testdata/v8/third_party/googletest/src/googletest/include/gtest/new/gtest_new b/deps/v8/tools/release/testdata/v8/third_party/googletest/src/googletest/include/gtest/new/gtest_new new file mode 100644 index 00000000000000..e69de29bb2d1d6 diff --git a/deps/v8/tools/run-num-fuzzer.isolate b/deps/v8/tools/run-num-fuzzer.isolate deleted file mode 100644 index e9acbd4cb08455..00000000000000 --- a/deps/v8/tools/run-num-fuzzer.isolate +++ /dev/null @@ -1,20 +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. -{ - 'variables': { - 'command': [ - 'run-num-fuzzer.py', - ], - 'files': [ - 'run-num-fuzzer.py', - ], - }, - 'includes': [ - 'testrunner/testrunner.isolate', - '../src/d8.isolate', - '../test/benchmarks/benchmarks.isolate', - '../test/mjsunit/mjsunit.isolate', - '../test/webkit/webkit.isolate', - ], -} diff --git a/deps/v8/tools/run_perf.py b/deps/v8/tools/run_perf.py index e19f6a056bb022..2bd4372453d367 100755 --- a/deps/v8/tools/run_perf.py +++ b/deps/v8/tools/run_perf.py @@ -793,6 +793,12 @@ def _PushExecutable(self, shell_dir, target_dir, binary): target_dir, skip_if_missing=True, ) + self._PushFile( + shell_dir, + "snapshot_blob_trusted.bin", + target_dir, + skip_if_missing=True, + ) self._PushFile( shell_dir, "icudtl.dat", diff --git a/deps/v8/tools/testrunner/base_runner.py b/deps/v8/tools/testrunner/base_runner.py index 7721360e2a01a5..cfea1527d4af37 100644 --- a/deps/v8/tools/testrunner/base_runner.py +++ b/deps/v8/tools/testrunner/base_runner.py @@ -599,6 +599,10 @@ def _get_statusfile_variables(self, options): self.build_config.mips_arch_variant == "r6" and self.build_config.mips_use_msa) + mips_arch_variant = ( + self.build_config.arch in ['mipsel', 'mips', 'mips64', 'mips64el'] and + self.build_config.mips_arch_variant) + # TODO(all): Combine "simulator" and "simulator_run". # TODO(machenbach): In GN we can derive simulator run from # target_arch != v8_target_arch in the dumped build config. @@ -613,6 +617,7 @@ def _get_statusfile_variables(self, options): "gc_stress": False, "gcov_coverage": self.build_config.gcov_coverage, "isolates": options.isolates, + "mips_arch_variant": mips_arch_variant, "mode": self.mode_options.status_mode, "msan": self.build_config.msan, "no_harness": options.no_harness, diff --git a/deps/v8/tools/testrunner/local/statusfile.py b/deps/v8/tools/testrunner/local/statusfile.py index e3adaa298a60d0..ecfbf008a23997 100644 --- a/deps/v8/tools/testrunner/local/statusfile.py +++ b/deps/v8/tools/testrunner/local/statusfile.py @@ -59,7 +59,7 @@ "android_arm", "android_arm64", "android_ia32", "android_x64", "arm", "arm64", "ia32", "mips", "mipsel", "mips64", "mips64el", "x64", "ppc", "ppc64", "s390", "s390x", "macos", "windows", - "linux", "aix"]: + "linux", "aix", "r1", "r2", "r3", "r5", "r6"]: VARIABLES[var] = var # Allow using variants as keywords. diff --git a/deps/v8/tools/testrunner/local/variants.py b/deps/v8/tools/testrunner/local/variants.py index 25de235da1e645..1c29f1d1955ecf 100644 --- a/deps/v8/tools/testrunner/local/variants.py +++ b/deps/v8/tools/testrunner/local/variants.py @@ -17,13 +17,12 @@ "nooptimization": [["--noopt"]], "slow_path": [["--force-slow-path"]], "stress": [["--stress-opt", "--always-opt"]], - "stress_background_compile": [["--background-compile", "--stress-background-compile"]], + "stress_background_compile": [["--stress-background-compile"]], "stress_incremental_marking": [["--stress-incremental-marking"]], # Trigger stress sampling allocation profiler with sample interval = 2^14 "stress_sampling": [["--stress-sampling-allocation-profiler=16384"]], "trusted": [["--no-untrusted-code-mitigations"]], "wasm_traps": [["--wasm-trap-handler", "--invoke-weak-callbacks"]], - "wasm_no_native": [["--no-wasm-jit-to-native"]], } SLOW_VARIANTS = set([ diff --git a/deps/v8/tools/testrunner/standard_runner.py b/deps/v8/tools/testrunner/standard_runner.py index d3d2bd53a6fbe1..bea00476f4e63a 100755 --- a/deps/v8/tools/testrunner/standard_runner.py +++ b/deps/v8/tools/testrunner/standard_runner.py @@ -44,7 +44,7 @@ # Shortcut for the two above ("more" first - it has the longer running tests). "exhaustive": MORE_VARIANTS + VARIANTS, # Additional variants, run on a subset of bots. - "extra": ["future", "liftoff", "trusted", "wasm_no_native"], + "extra": ["future", "liftoff", "trusted"], } GC_STRESS_FLAGS = ["--gc-interval=500", "--stress-compaction", diff --git a/deps/v8/tools/testrunner/testrunner.isolate b/deps/v8/tools/testrunner/testrunner.isolate deleted file mode 100644 index 56667c20215b51..00000000000000 --- a/deps/v8/tools/testrunner/testrunner.isolate +++ /dev/null @@ -1,25 +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. -{ - 'variables': { - 'command': [ - '../run-tests.py', - ], - 'files': [ - '<(PRODUCT_DIR)/v8_build_config.json', - '../run-tests.py', - './' - ], - }, - 'conditions': [ - ['coverage==1 and sanitizer_coverage=="bb,trace-pc-guard"', { - 'variables': { - 'files': [ - '../sanitizers/sancov_merger.py', - '../../third_party/llvm/projects/compiler-rt/lib/sanitizer_common/scripts/sancov.py', - ], - }, - }], - ], -} diff --git a/deps/v8/tools/toolchain/BUILD.gn b/deps/v8/tools/toolchain/BUILD.gn index b2462054c4efad..b252c5eed5392c 100644 --- a/deps/v8/tools/toolchain/BUILD.gn +++ b/deps/v8/tools/toolchain/BUILD.gn @@ -15,9 +15,79 @@ gcc_toolchain("mips-bundled") { ar = "${toolprefix}ar" ld = cxx + # Flag that sets endianness + extra_ldflags = "-EB" + extra_cppflags = "-EB" + toolchain_args = { current_cpu = "mips" current_os = "linux" is_clang = false } } + +gcc_toolchain("mips64-bundled") { + toolprefix = rebase_path("//tools/mips_toolchain/bin/mips-mti-linux-gnu-", + root_build_dir) + cc = "${toolprefix}gcc" + cxx = "${toolprefix}g++" + + readelf = "${toolprefix}readelf" + nm = "${toolprefix}nm" + ar = "${toolprefix}ar" + ld = cxx + + # Flag that sets endianness and ABI + extra_ldflags = "-EB -mabi=64" + extra_cppflags = "-EB -mabi=64" + + toolchain_args = { + current_cpu = "mips64" + current_os = "linux" + is_clang = false + } +} + +gcc_toolchain("mipsel-bundled") { + toolprefix = rebase_path("//tools/mips_toolchain/bin/mips-mti-linux-gnu-", + root_build_dir) + cc = "${toolprefix}gcc" + cxx = "${toolprefix}g++" + + readelf = "${toolprefix}readelf" + nm = "${toolprefix}nm" + ar = "${toolprefix}ar" + ld = cxx + + # Flag that sets endianness + extra_ldflags = "-EL" + extra_cppflags = "-EL" + + toolchain_args = { + current_cpu = "mipsel" + current_os = "linux" + is_clang = false + } +} + +gcc_toolchain("mips64el-bundled") { + toolprefix = rebase_path("//tools/mips_toolchain/bin/mips-mti-linux-gnu-", + root_build_dir) + cc = "${toolprefix}gcc" + cxx = "${toolprefix}g++" + + readelf = "${toolprefix}readelf" + nm = "${toolprefix}nm" + ar = "${toolprefix}ar" + ld = cxx + + # Flag that sets endianness and ABI + extra_ldflags = "-EL -mabi=64" + extra_cppflags = "-EL -mabi=64" + + toolchain_args = { + current_cpu = "mips64el" + current_os = "linux" + is_clang = false + } +} diff --git a/deps/v8/tools/v8heapconst.py b/deps/v8/tools/v8heapconst.py index 5659cdd03c8814..1e57ce64a9e297 100644 --- a/deps/v8/tools/v8heapconst.py +++ b/deps/v8/tools/v8heapconst.py @@ -52,50 +52,67 @@ 148: "FIXED_BIGINT64_ARRAY_TYPE", 149: "FIXED_BIGUINT64_ARRAY_TYPE", 150: "FIXED_DOUBLE_ARRAY_TYPE", - 151: "FILLER_TYPE", - 152: "ACCESS_CHECK_INFO_TYPE", - 153: "ACCESSOR_INFO_TYPE", - 154: "ACCESSOR_PAIR_TYPE", - 155: "ALIASED_ARGUMENTS_ENTRY_TYPE", - 156: "ALLOCATION_MEMENTO_TYPE", - 157: "ALLOCATION_SITE_TYPE", - 158: "ASYNC_GENERATOR_REQUEST_TYPE", - 159: "CONTEXT_EXTENSION_TYPE", - 160: "DEBUG_INFO_TYPE", - 161: "FUNCTION_TEMPLATE_INFO_TYPE", - 162: "INTERCEPTOR_INFO_TYPE", - 163: "MODULE_INFO_ENTRY_TYPE", - 164: "MODULE_TYPE", - 165: "OBJECT_TEMPLATE_INFO_TYPE", - 166: "PROMISE_CAPABILITY_TYPE", - 167: "PROMISE_REACTION_TYPE", - 168: "PROTOTYPE_INFO_TYPE", - 169: "SCRIPT_TYPE", - 170: "STACK_FRAME_INFO_TYPE", - 171: "TUPLE2_TYPE", - 172: "TUPLE3_TYPE", - 173: "CALLABLE_TASK_TYPE", - 174: "CALLBACK_TASK_TYPE", - 175: "PROMISE_FULFILL_REACTION_JOB_TASK_TYPE", - 176: "PROMISE_REJECT_REACTION_JOB_TASK_TYPE", - 177: "PROMISE_RESOLVE_THENABLE_JOB_TASK_TYPE", - 178: "FIXED_ARRAY_TYPE", - 179: "DESCRIPTOR_ARRAY_TYPE", - 180: "HASH_TABLE_TYPE", - 181: "SCOPE_INFO_TYPE", - 182: "TRANSITION_ARRAY_TYPE", - 183: "CELL_TYPE", - 184: "CODE_DATA_CONTAINER_TYPE", - 185: "FEEDBACK_CELL_TYPE", - 186: "FEEDBACK_VECTOR_TYPE", - 187: "LOAD_HANDLER_TYPE", - 188: "PROPERTY_ARRAY_TYPE", - 189: "PROPERTY_CELL_TYPE", - 190: "SHARED_FUNCTION_INFO_TYPE", - 191: "SMALL_ORDERED_HASH_MAP_TYPE", - 192: "SMALL_ORDERED_HASH_SET_TYPE", - 193: "STORE_HANDLER_TYPE", - 194: "WEAK_CELL_TYPE", + 151: "FEEDBACK_METADATA_TYPE", + 152: "FILLER_TYPE", + 153: "ACCESS_CHECK_INFO_TYPE", + 154: "ACCESSOR_INFO_TYPE", + 155: "ACCESSOR_PAIR_TYPE", + 156: "ALIASED_ARGUMENTS_ENTRY_TYPE", + 157: "ALLOCATION_MEMENTO_TYPE", + 158: "ALLOCATION_SITE_TYPE", + 159: "ASYNC_GENERATOR_REQUEST_TYPE", + 160: "CONTEXT_EXTENSION_TYPE", + 161: "DEBUG_INFO_TYPE", + 162: "FUNCTION_TEMPLATE_INFO_TYPE", + 163: "INTERCEPTOR_INFO_TYPE", + 164: "INTERPRETER_DATA_TYPE", + 165: "MODULE_INFO_ENTRY_TYPE", + 166: "MODULE_TYPE", + 167: "OBJECT_TEMPLATE_INFO_TYPE", + 168: "PROMISE_CAPABILITY_TYPE", + 169: "PROMISE_REACTION_TYPE", + 170: "PROTOTYPE_INFO_TYPE", + 171: "SCRIPT_TYPE", + 172: "STACK_FRAME_INFO_TYPE", + 173: "TUPLE2_TYPE", + 174: "TUPLE3_TYPE", + 175: "WASM_COMPILED_MODULE_TYPE", + 176: "WASM_DEBUG_INFO_TYPE", + 177: "WASM_SHARED_MODULE_DATA_TYPE", + 178: "CALLABLE_TASK_TYPE", + 179: "CALLBACK_TASK_TYPE", + 180: "PROMISE_FULFILL_REACTION_JOB_TASK_TYPE", + 181: "PROMISE_REJECT_REACTION_JOB_TASK_TYPE", + 182: "PROMISE_RESOLVE_THENABLE_JOB_TASK_TYPE", + 183: "FIXED_ARRAY_TYPE", + 184: "BOILERPLATE_DESCRIPTION_TYPE", + 185: "DESCRIPTOR_ARRAY_TYPE", + 186: "HASH_TABLE_TYPE", + 187: "SCOPE_INFO_TYPE", + 188: "TRANSITION_ARRAY_TYPE", + 189: "BLOCK_CONTEXT_TYPE", + 190: "CATCH_CONTEXT_TYPE", + 191: "DEBUG_EVALUATE_CONTEXT_TYPE", + 192: "EVAL_CONTEXT_TYPE", + 193: "FUNCTION_CONTEXT_TYPE", + 194: "MODULE_CONTEXT_TYPE", + 195: "NATIVE_CONTEXT_TYPE", + 196: "SCRIPT_CONTEXT_TYPE", + 197: "WITH_CONTEXT_TYPE", + 198: "CALL_HANDLER_INFO_TYPE", + 199: "CELL_TYPE", + 200: "CODE_DATA_CONTAINER_TYPE", + 201: "FEEDBACK_CELL_TYPE", + 202: "FEEDBACK_VECTOR_TYPE", + 203: "LOAD_HANDLER_TYPE", + 204: "PROPERTY_ARRAY_TYPE", + 205: "PROPERTY_CELL_TYPE", + 206: "SHARED_FUNCTION_INFO_TYPE", + 207: "SMALL_ORDERED_HASH_MAP_TYPE", + 208: "SMALL_ORDERED_HASH_SET_TYPE", + 209: "STORE_HANDLER_TYPE", + 210: "WEAK_CELL_TYPE", + 211: "WEAK_FIXED_ARRAY_TYPE", 1024: "JS_PROXY_TYPE", 1025: "JS_GLOBAL_OBJECT_TYPE", 1026: "JS_GLOBAL_PROXY_TYPE", @@ -106,201 +123,173 @@ 1057: "JS_OBJECT_TYPE", 1058: "JS_ARGUMENTS_TYPE", 1059: "JS_ARRAY_BUFFER_TYPE", - 1060: "JS_ARRAY_TYPE", - 1061: "JS_ASYNC_FROM_SYNC_ITERATOR_TYPE", - 1062: "JS_ASYNC_GENERATOR_OBJECT_TYPE", - 1063: "JS_CONTEXT_EXTENSION_OBJECT_TYPE", - 1064: "JS_DATE_TYPE", - 1065: "JS_ERROR_TYPE", - 1066: "JS_GENERATOR_OBJECT_TYPE", - 1067: "JS_MAP_TYPE", - 1068: "JS_MAP_KEY_ITERATOR_TYPE", - 1069: "JS_MAP_KEY_VALUE_ITERATOR_TYPE", - 1070: "JS_MAP_VALUE_ITERATOR_TYPE", - 1071: "JS_MESSAGE_OBJECT_TYPE", - 1072: "JS_PROMISE_TYPE", - 1073: "JS_REGEXP_TYPE", - 1074: "JS_SET_TYPE", - 1075: "JS_SET_KEY_VALUE_ITERATOR_TYPE", - 1076: "JS_SET_VALUE_ITERATOR_TYPE", - 1077: "JS_STRING_ITERATOR_TYPE", - 1078: "JS_WEAK_MAP_TYPE", - 1079: "JS_WEAK_SET_TYPE", - 1080: "JS_TYPED_ARRAY_TYPE", - 1081: "JS_DATA_VIEW_TYPE", - 1082: "JS_TYPED_ARRAY_KEY_ITERATOR_TYPE", - 1083: "JS_FAST_ARRAY_KEY_ITERATOR_TYPE", - 1084: "JS_GENERIC_ARRAY_KEY_ITERATOR_TYPE", - 1085: "JS_UINT8_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1086: "JS_INT8_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1087: "JS_UINT16_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1088: "JS_INT16_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1089: "JS_UINT32_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1090: "JS_INT32_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1091: "JS_FLOAT32_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1092: "JS_FLOAT64_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1093: "JS_UINT8_CLAMPED_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1094: "JS_BIGUINT64_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1095: "JS_BIGINT64_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1096: "JS_FAST_SMI_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1097: "JS_FAST_HOLEY_SMI_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1098: "JS_FAST_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1099: "JS_FAST_HOLEY_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1100: "JS_FAST_DOUBLE_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1101: "JS_FAST_HOLEY_DOUBLE_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1102: "JS_GENERIC_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1103: "JS_UINT8_ARRAY_VALUE_ITERATOR_TYPE", - 1104: "JS_INT8_ARRAY_VALUE_ITERATOR_TYPE", - 1105: "JS_UINT16_ARRAY_VALUE_ITERATOR_TYPE", - 1106: "JS_INT16_ARRAY_VALUE_ITERATOR_TYPE", - 1107: "JS_UINT32_ARRAY_VALUE_ITERATOR_TYPE", - 1108: "JS_INT32_ARRAY_VALUE_ITERATOR_TYPE", - 1109: "JS_FLOAT32_ARRAY_VALUE_ITERATOR_TYPE", - 1110: "JS_FLOAT64_ARRAY_VALUE_ITERATOR_TYPE", - 1111: "JS_UINT8_CLAMPED_ARRAY_VALUE_ITERATOR_TYPE", - 1112: "JS_BIGUINT64_ARRAY_VALUE_ITERATOR_TYPE", - 1113: "JS_BIGINT64_ARRAY_VALUE_ITERATOR_TYPE", - 1114: "JS_FAST_SMI_ARRAY_VALUE_ITERATOR_TYPE", - 1115: "JS_FAST_HOLEY_SMI_ARRAY_VALUE_ITERATOR_TYPE", - 1116: "JS_FAST_ARRAY_VALUE_ITERATOR_TYPE", - 1117: "JS_FAST_HOLEY_ARRAY_VALUE_ITERATOR_TYPE", - 1118: "JS_FAST_DOUBLE_ARRAY_VALUE_ITERATOR_TYPE", - 1119: "JS_FAST_HOLEY_DOUBLE_ARRAY_VALUE_ITERATOR_TYPE", - 1120: "JS_GENERIC_ARRAY_VALUE_ITERATOR_TYPE", - 1121: "WASM_INSTANCE_TYPE", - 1122: "WASM_MEMORY_TYPE", - 1123: "WASM_MODULE_TYPE", - 1124: "WASM_TABLE_TYPE", - 1125: "JS_BOUND_FUNCTION_TYPE", - 1126: "JS_FUNCTION_TYPE", + 1060: "JS_ARRAY_ITERATOR_TYPE", + 1061: "JS_ARRAY_TYPE", + 1062: "JS_ASYNC_FROM_SYNC_ITERATOR_TYPE", + 1063: "JS_ASYNC_GENERATOR_OBJECT_TYPE", + 1064: "JS_CONTEXT_EXTENSION_OBJECT_TYPE", + 1065: "JS_DATE_TYPE", + 1066: "JS_ERROR_TYPE", + 1067: "JS_GENERATOR_OBJECT_TYPE", + 1068: "JS_MAP_TYPE", + 1069: "JS_MAP_KEY_ITERATOR_TYPE", + 1070: "JS_MAP_KEY_VALUE_ITERATOR_TYPE", + 1071: "JS_MAP_VALUE_ITERATOR_TYPE", + 1072: "JS_MESSAGE_OBJECT_TYPE", + 1073: "JS_PROMISE_TYPE", + 1074: "JS_REGEXP_TYPE", + 1075: "JS_REGEXP_STRING_ITERATOR_TYPE", + 1076: "JS_SET_TYPE", + 1077: "JS_SET_KEY_VALUE_ITERATOR_TYPE", + 1078: "JS_SET_VALUE_ITERATOR_TYPE", + 1079: "JS_STRING_ITERATOR_TYPE", + 1080: "JS_WEAK_MAP_TYPE", + 1081: "JS_WEAK_SET_TYPE", + 1082: "JS_TYPED_ARRAY_TYPE", + 1083: "JS_DATA_VIEW_TYPE", + 1084: "WASM_GLOBAL_TYPE", + 1085: "WASM_INSTANCE_TYPE", + 1086: "WASM_MEMORY_TYPE", + 1087: "WASM_MODULE_TYPE", + 1088: "WASM_TABLE_TYPE", + 1089: "JS_BOUND_FUNCTION_TYPE", + 1090: "JS_FUNCTION_TYPE", } # List of known V8 maps. KNOWN_MAPS = { - 0x02201: (138, "FreeSpaceMap"), - 0x02251: (132, "MetaMap"), - 0x022a1: (131, "NullMap"), - 0x022f1: (179, "DescriptorArrayMap"), - 0x02341: (178, "FixedArrayMap"), - 0x02391: (151, "OnePointerFillerMap"), - 0x023e1: (151, "TwoPointerFillerMap"), - 0x02431: (131, "UninitializedMap"), - 0x02481: (8, "OneByteInternalizedStringMap"), - 0x024d1: (131, "UndefinedMap"), - 0x02521: (129, "HeapNumberMap"), - 0x02571: (131, "TheHoleMap"), - 0x025c1: (131, "BooleanMap"), - 0x02611: (136, "ByteArrayMap"), - 0x02661: (178, "FixedCOWArrayMap"), - 0x026b1: (180, "HashTableMap"), - 0x02701: (128, "SymbolMap"), - 0x02751: (72, "OneByteStringMap"), - 0x027a1: (181, "ScopeInfoMap"), - 0x027f1: (190, "SharedFunctionInfoMap"), - 0x02841: (133, "CodeMap"), - 0x02891: (178, "FunctionContextMap"), - 0x028e1: (183, "CellMap"), - 0x02931: (194, "WeakCellMap"), - 0x02981: (189, "GlobalPropertyCellMap"), - 0x029d1: (135, "ForeignMap"), - 0x02a21: (182, "TransitionArrayMap"), - 0x02a71: (186, "FeedbackVectorMap"), - 0x02ac1: (131, "ArgumentsMarkerMap"), - 0x02b11: (131, "ExceptionMap"), - 0x02b61: (131, "TerminationExceptionMap"), - 0x02bb1: (131, "OptimizedOutMap"), - 0x02c01: (131, "StaleRegisterMap"), - 0x02c51: (178, "NativeContextMap"), - 0x02ca1: (178, "ModuleContextMap"), - 0x02cf1: (178, "EvalContextMap"), - 0x02d41: (178, "ScriptContextMap"), - 0x02d91: (178, "BlockContextMap"), - 0x02de1: (178, "CatchContextMap"), - 0x02e31: (178, "WithContextMap"), - 0x02e81: (178, "DebugEvaluateContextMap"), - 0x02ed1: (178, "ScriptContextTableMap"), - 0x02f21: (178, "ArrayListMap"), - 0x02f71: (150, "FixedDoubleArrayMap"), - 0x02fc1: (134, "MutableHeapNumberMap"), - 0x03011: (180, "OrderedHashMapMap"), - 0x03061: (180, "OrderedHashSetMap"), - 0x030b1: (180, "NameDictionaryMap"), - 0x03101: (180, "GlobalDictionaryMap"), - 0x03151: (180, "NumberDictionaryMap"), - 0x031a1: (180, "SimpleNumberDictionaryMap"), - 0x031f1: (180, "StringTableMap"), - 0x03241: (180, "WeakHashTableMap"), - 0x03291: (178, "SloppyArgumentsElementsMap"), - 0x032e1: (191, "SmallOrderedHashMapMap"), - 0x03331: (192, "SmallOrderedHashSetMap"), - 0x03381: (184, "CodeDataContainerMap"), - 0x033d1: (1071, "JSMessageObjectMap"), - 0x03421: (1057, "ExternalMap"), - 0x03471: (137, "BytecodeArrayMap"), - 0x034c1: (178, "ModuleInfoMap"), - 0x03511: (185, "NoClosuresCellMap"), - 0x03561: (185, "OneClosureCellMap"), - 0x035b1: (185, "ManyClosuresCellMap"), - 0x03601: (188, "PropertyArrayMap"), - 0x03651: (130, "BigIntMap"), - 0x036a1: (106, "NativeSourceStringMap"), - 0x036f1: (64, "StringMap"), - 0x03741: (73, "ConsOneByteStringMap"), - 0x03791: (65, "ConsStringMap"), - 0x037e1: (77, "ThinOneByteStringMap"), - 0x03831: (69, "ThinStringMap"), - 0x03881: (67, "SlicedStringMap"), - 0x038d1: (75, "SlicedOneByteStringMap"), - 0x03921: (66, "ExternalStringMap"), - 0x03971: (82, "ExternalStringWithOneByteDataMap"), - 0x039c1: (74, "ExternalOneByteStringMap"), - 0x03a11: (98, "ShortExternalStringMap"), - 0x03a61: (114, "ShortExternalStringWithOneByteDataMap"), - 0x03ab1: (0, "InternalizedStringMap"), - 0x03b01: (2, "ExternalInternalizedStringMap"), - 0x03b51: (18, "ExternalInternalizedStringWithOneByteDataMap"), - 0x03ba1: (10, "ExternalOneByteInternalizedStringMap"), - 0x03bf1: (34, "ShortExternalInternalizedStringMap"), - 0x03c41: (50, "ShortExternalInternalizedStringWithOneByteDataMap"), - 0x03c91: (42, "ShortExternalOneByteInternalizedStringMap"), - 0x03ce1: (106, "ShortExternalOneByteStringMap"), - 0x03d31: (140, "FixedUint8ArrayMap"), - 0x03d81: (139, "FixedInt8ArrayMap"), - 0x03dd1: (142, "FixedUint16ArrayMap"), - 0x03e21: (141, "FixedInt16ArrayMap"), - 0x03e71: (144, "FixedUint32ArrayMap"), - 0x03ec1: (143, "FixedInt32ArrayMap"), - 0x03f11: (145, "FixedFloat32ArrayMap"), - 0x03f61: (146, "FixedFloat64ArrayMap"), - 0x03fb1: (147, "FixedUint8ClampedArrayMap"), - 0x04001: (149, "FixedBigUint64ArrayMap"), - 0x04051: (148, "FixedBigInt64ArrayMap"), - 0x040a1: (171, "Tuple2Map"), - 0x040f1: (169, "ScriptMap"), - 0x04141: (162, "InterceptorInfoMap"), - 0x04191: (153, "AccessorInfoMap"), - 0x041e1: (152, "AccessCheckInfoMap"), - 0x04231: (154, "AccessorPairMap"), - 0x04281: (155, "AliasedArgumentsEntryMap"), - 0x042d1: (156, "AllocationMementoMap"), - 0x04321: (157, "AllocationSiteMap"), - 0x04371: (158, "AsyncGeneratorRequestMap"), - 0x043c1: (159, "ContextExtensionMap"), - 0x04411: (160, "DebugInfoMap"), - 0x04461: (161, "FunctionTemplateInfoMap"), - 0x044b1: (163, "ModuleInfoEntryMap"), - 0x04501: (164, "ModuleMap"), - 0x04551: (165, "ObjectTemplateInfoMap"), - 0x045a1: (166, "PromiseCapabilityMap"), - 0x045f1: (167, "PromiseReactionMap"), - 0x04641: (168, "PrototypeInfoMap"), - 0x04691: (170, "StackFrameInfoMap"), - 0x046e1: (172, "Tuple3Map"), - 0x04731: (173, "CallableTaskMap"), - 0x04781: (174, "CallbackTaskMap"), - 0x047d1: (175, "PromiseFulfillReactionJobTaskMap"), - 0x04821: (176, "PromiseRejectReactionJobTaskMap"), - 0x04871: (177, "PromiseResolveThenableJobTaskMap"), + ("MAP_SPACE", 0x02201): (138, "FreeSpaceMap"), + ("MAP_SPACE", 0x02259): (132, "MetaMap"), + ("MAP_SPACE", 0x022b1): (131, "NullMap"), + ("MAP_SPACE", 0x02309): (185, "DescriptorArrayMap"), + ("MAP_SPACE", 0x02361): (183, "FixedArrayMap"), + ("MAP_SPACE", 0x023b9): (152, "OnePointerFillerMap"), + ("MAP_SPACE", 0x02411): (152, "TwoPointerFillerMap"), + ("MAP_SPACE", 0x02469): (131, "UninitializedMap"), + ("MAP_SPACE", 0x024c1): (8, "OneByteInternalizedStringMap"), + ("MAP_SPACE", 0x02519): (131, "UndefinedMap"), + ("MAP_SPACE", 0x02571): (129, "HeapNumberMap"), + ("MAP_SPACE", 0x025c9): (131, "TheHoleMap"), + ("MAP_SPACE", 0x02621): (131, "BooleanMap"), + ("MAP_SPACE", 0x02679): (136, "ByteArrayMap"), + ("MAP_SPACE", 0x026d1): (183, "FixedCOWArrayMap"), + ("MAP_SPACE", 0x02729): (186, "HashTableMap"), + ("MAP_SPACE", 0x02781): (128, "SymbolMap"), + ("MAP_SPACE", 0x027d9): (72, "OneByteStringMap"), + ("MAP_SPACE", 0x02831): (187, "ScopeInfoMap"), + ("MAP_SPACE", 0x02889): (206, "SharedFunctionInfoMap"), + ("MAP_SPACE", 0x028e1): (133, "CodeMap"), + ("MAP_SPACE", 0x02939): (193, "FunctionContextMap"), + ("MAP_SPACE", 0x02991): (199, "CellMap"), + ("MAP_SPACE", 0x029e9): (210, "WeakCellMap"), + ("MAP_SPACE", 0x02a41): (205, "GlobalPropertyCellMap"), + ("MAP_SPACE", 0x02a99): (135, "ForeignMap"), + ("MAP_SPACE", 0x02af1): (188, "TransitionArrayMap"), + ("MAP_SPACE", 0x02b49): (202, "FeedbackVectorMap"), + ("MAP_SPACE", 0x02ba1): (131, "ArgumentsMarkerMap"), + ("MAP_SPACE", 0x02bf9): (131, "ExceptionMap"), + ("MAP_SPACE", 0x02c51): (131, "TerminationExceptionMap"), + ("MAP_SPACE", 0x02ca9): (131, "OptimizedOutMap"), + ("MAP_SPACE", 0x02d01): (131, "StaleRegisterMap"), + ("MAP_SPACE", 0x02d59): (195, "NativeContextMap"), + ("MAP_SPACE", 0x02db1): (194, "ModuleContextMap"), + ("MAP_SPACE", 0x02e09): (192, "EvalContextMap"), + ("MAP_SPACE", 0x02e61): (196, "ScriptContextMap"), + ("MAP_SPACE", 0x02eb9): (189, "BlockContextMap"), + ("MAP_SPACE", 0x02f11): (190, "CatchContextMap"), + ("MAP_SPACE", 0x02f69): (197, "WithContextMap"), + ("MAP_SPACE", 0x02fc1): (191, "DebugEvaluateContextMap"), + ("MAP_SPACE", 0x03019): (183, "ScriptContextTableMap"), + ("MAP_SPACE", 0x03071): (151, "FeedbackMetadataArrayMap"), + ("MAP_SPACE", 0x030c9): (183, "ArrayListMap"), + ("MAP_SPACE", 0x03121): (130, "BigIntMap"), + ("MAP_SPACE", 0x03179): (184, "BoilerplateDescriptionMap"), + ("MAP_SPACE", 0x031d1): (137, "BytecodeArrayMap"), + ("MAP_SPACE", 0x03229): (200, "CodeDataContainerMap"), + ("MAP_SPACE", 0x03281): (1057, "ExternalMap"), + ("MAP_SPACE", 0x032d9): (150, "FixedDoubleArrayMap"), + ("MAP_SPACE", 0x03331): (186, "GlobalDictionaryMap"), + ("MAP_SPACE", 0x03389): (201, "ManyClosuresCellMap"), + ("MAP_SPACE", 0x033e1): (1072, "JSMessageObjectMap"), + ("MAP_SPACE", 0x03439): (183, "ModuleInfoMap"), + ("MAP_SPACE", 0x03491): (134, "MutableHeapNumberMap"), + ("MAP_SPACE", 0x034e9): (186, "NameDictionaryMap"), + ("MAP_SPACE", 0x03541): (201, "NoClosuresCellMap"), + ("MAP_SPACE", 0x03599): (186, "NumberDictionaryMap"), + ("MAP_SPACE", 0x035f1): (201, "OneClosureCellMap"), + ("MAP_SPACE", 0x03649): (186, "OrderedHashMapMap"), + ("MAP_SPACE", 0x036a1): (186, "OrderedHashSetMap"), + ("MAP_SPACE", 0x036f9): (204, "PropertyArrayMap"), + ("MAP_SPACE", 0x03751): (198, "SideEffectCallHandlerInfoMap"), + ("MAP_SPACE", 0x037a9): (198, "SideEffectFreeCallHandlerInfoMap"), + ("MAP_SPACE", 0x03801): (186, "SimpleNumberDictionaryMap"), + ("MAP_SPACE", 0x03859): (183, "SloppyArgumentsElementsMap"), + ("MAP_SPACE", 0x038b1): (207, "SmallOrderedHashMapMap"), + ("MAP_SPACE", 0x03909): (208, "SmallOrderedHashSetMap"), + ("MAP_SPACE", 0x03961): (186, "StringTableMap"), + ("MAP_SPACE", 0x039b9): (211, "WeakFixedArrayMap"), + ("MAP_SPACE", 0x03a11): (106, "NativeSourceStringMap"), + ("MAP_SPACE", 0x03a69): (64, "StringMap"), + ("MAP_SPACE", 0x03ac1): (73, "ConsOneByteStringMap"), + ("MAP_SPACE", 0x03b19): (65, "ConsStringMap"), + ("MAP_SPACE", 0x03b71): (77, "ThinOneByteStringMap"), + ("MAP_SPACE", 0x03bc9): (69, "ThinStringMap"), + ("MAP_SPACE", 0x03c21): (67, "SlicedStringMap"), + ("MAP_SPACE", 0x03c79): (75, "SlicedOneByteStringMap"), + ("MAP_SPACE", 0x03cd1): (66, "ExternalStringMap"), + ("MAP_SPACE", 0x03d29): (82, "ExternalStringWithOneByteDataMap"), + ("MAP_SPACE", 0x03d81): (74, "ExternalOneByteStringMap"), + ("MAP_SPACE", 0x03dd9): (98, "ShortExternalStringMap"), + ("MAP_SPACE", 0x03e31): (114, "ShortExternalStringWithOneByteDataMap"), + ("MAP_SPACE", 0x03e89): (0, "InternalizedStringMap"), + ("MAP_SPACE", 0x03ee1): (2, "ExternalInternalizedStringMap"), + ("MAP_SPACE", 0x03f39): (18, "ExternalInternalizedStringWithOneByteDataMap"), + ("MAP_SPACE", 0x03f91): (10, "ExternalOneByteInternalizedStringMap"), + ("MAP_SPACE", 0x03fe9): (34, "ShortExternalInternalizedStringMap"), + ("MAP_SPACE", 0x04041): (50, "ShortExternalInternalizedStringWithOneByteDataMap"), + ("MAP_SPACE", 0x04099): (42, "ShortExternalOneByteInternalizedStringMap"), + ("MAP_SPACE", 0x040f1): (106, "ShortExternalOneByteStringMap"), + ("MAP_SPACE", 0x04149): (140, "FixedUint8ArrayMap"), + ("MAP_SPACE", 0x041a1): (139, "FixedInt8ArrayMap"), + ("MAP_SPACE", 0x041f9): (142, "FixedUint16ArrayMap"), + ("MAP_SPACE", 0x04251): (141, "FixedInt16ArrayMap"), + ("MAP_SPACE", 0x042a9): (144, "FixedUint32ArrayMap"), + ("MAP_SPACE", 0x04301): (143, "FixedInt32ArrayMap"), + ("MAP_SPACE", 0x04359): (145, "FixedFloat32ArrayMap"), + ("MAP_SPACE", 0x043b1): (146, "FixedFloat64ArrayMap"), + ("MAP_SPACE", 0x04409): (147, "FixedUint8ClampedArrayMap"), + ("MAP_SPACE", 0x04461): (149, "FixedBigUint64ArrayMap"), + ("MAP_SPACE", 0x044b9): (148, "FixedBigInt64ArrayMap"), + ("MAP_SPACE", 0x04511): (173, "Tuple2Map"), + ("MAP_SPACE", 0x04569): (171, "ScriptMap"), + ("MAP_SPACE", 0x045c1): (163, "InterceptorInfoMap"), + ("MAP_SPACE", 0x04619): (154, "AccessorInfoMap"), + ("MAP_SPACE", 0x04671): (153, "AccessCheckInfoMap"), + ("MAP_SPACE", 0x046c9): (155, "AccessorPairMap"), + ("MAP_SPACE", 0x04721): (156, "AliasedArgumentsEntryMap"), + ("MAP_SPACE", 0x04779): (157, "AllocationMementoMap"), + ("MAP_SPACE", 0x047d1): (158, "AllocationSiteMap"), + ("MAP_SPACE", 0x04829): (159, "AsyncGeneratorRequestMap"), + ("MAP_SPACE", 0x04881): (160, "ContextExtensionMap"), + ("MAP_SPACE", 0x048d9): (161, "DebugInfoMap"), + ("MAP_SPACE", 0x04931): (162, "FunctionTemplateInfoMap"), + ("MAP_SPACE", 0x04989): (164, "InterpreterDataMap"), + ("MAP_SPACE", 0x049e1): (165, "ModuleInfoEntryMap"), + ("MAP_SPACE", 0x04a39): (166, "ModuleMap"), + ("MAP_SPACE", 0x04a91): (167, "ObjectTemplateInfoMap"), + ("MAP_SPACE", 0x04ae9): (168, "PromiseCapabilityMap"), + ("MAP_SPACE", 0x04b41): (169, "PromiseReactionMap"), + ("MAP_SPACE", 0x04b99): (170, "PrototypeInfoMap"), + ("MAP_SPACE", 0x04bf1): (172, "StackFrameInfoMap"), + ("MAP_SPACE", 0x04c49): (174, "Tuple3Map"), + ("MAP_SPACE", 0x04ca1): (175, "WasmCompiledModuleMap"), + ("MAP_SPACE", 0x04cf9): (176, "WasmDebugInfoMap"), + ("MAP_SPACE", 0x04d51): (177, "WasmSharedModuleDataMap"), + ("MAP_SPACE", 0x04da9): (178, "CallableTaskMap"), + ("MAP_SPACE", 0x04e01): (179, "CallbackTaskMap"), + ("MAP_SPACE", 0x04e59): (180, "PromiseFulfillReactionJobTaskMap"), + ("MAP_SPACE", 0x04eb1): (181, "PromiseRejectReactionJobTaskMap"), + ("MAP_SPACE", 0x04f09): (182, "PromiseResolveThenableJobTaskMap"), } # List of known V8 objects. @@ -322,34 +311,35 @@ ("OLD_SPACE", 0x02519): "TerminationException", ("OLD_SPACE", 0x02579): "OptimizedOut", ("OLD_SPACE", 0x025d1): "StaleRegister", - ("OLD_SPACE", 0x02651): "EmptyByteArray", - ("OLD_SPACE", 0x02661): "EmptyFixedUint8Array", - ("OLD_SPACE", 0x02681): "EmptyFixedInt8Array", - ("OLD_SPACE", 0x026a1): "EmptyFixedUint16Array", - ("OLD_SPACE", 0x026c1): "EmptyFixedInt16Array", - ("OLD_SPACE", 0x026e1): "EmptyFixedUint32Array", - ("OLD_SPACE", 0x02701): "EmptyFixedInt32Array", - ("OLD_SPACE", 0x02721): "EmptyFixedFloat32Array", - ("OLD_SPACE", 0x02741): "EmptyFixedFloat64Array", - ("OLD_SPACE", 0x02761): "EmptyFixedUint8ClampedArray", - ("OLD_SPACE", 0x027c1): "EmptyScript", - ("OLD_SPACE", 0x02849): "ManyClosuresCell", - ("OLD_SPACE", 0x02859): "EmptySloppyArgumentsElements", - ("OLD_SPACE", 0x02879): "EmptySlowElementDictionary", - ("OLD_SPACE", 0x028c1): "EmptyOrderedHashMap", - ("OLD_SPACE", 0x028e9): "EmptyOrderedHashSet", - ("OLD_SPACE", 0x02911): "EmptyPropertyCell", - ("OLD_SPACE", 0x02939): "EmptyWeakCell", - ("OLD_SPACE", 0x029a9): "NoElementsProtector", - ("OLD_SPACE", 0x029d1): "IsConcatSpreadableProtector", - ("OLD_SPACE", 0x029e1): "SpeciesProtector", - ("OLD_SPACE", 0x02a09): "StringLengthProtector", - ("OLD_SPACE", 0x02a19): "FastArrayIterationProtector", - ("OLD_SPACE", 0x02a29): "ArrayIteratorProtector", - ("OLD_SPACE", 0x02a51): "ArrayBufferNeuteringProtector", - ("OLD_SPACE", 0x02ac9): "InfinityValue", - ("OLD_SPACE", 0x02ad9): "MinusZeroValue", - ("OLD_SPACE", 0x02ae9): "MinusInfinityValue", + ("OLD_SPACE", 0x02661): "EmptyByteArray", + ("OLD_SPACE", 0x02681): "EmptyFixedUint8Array", + ("OLD_SPACE", 0x026a1): "EmptyFixedInt8Array", + ("OLD_SPACE", 0x026c1): "EmptyFixedUint16Array", + ("OLD_SPACE", 0x026e1): "EmptyFixedInt16Array", + ("OLD_SPACE", 0x02701): "EmptyFixedUint32Array", + ("OLD_SPACE", 0x02721): "EmptyFixedInt32Array", + ("OLD_SPACE", 0x02741): "EmptyFixedFloat32Array", + ("OLD_SPACE", 0x02761): "EmptyFixedFloat64Array", + ("OLD_SPACE", 0x02781): "EmptyFixedUint8ClampedArray", + ("OLD_SPACE", 0x027e1): "EmptyScript", + ("OLD_SPACE", 0x02879): "ManyClosuresCell", + ("OLD_SPACE", 0x02889): "EmptySloppyArgumentsElements", + ("OLD_SPACE", 0x028a9): "EmptySlowElementDictionary", + ("OLD_SPACE", 0x028f1): "EmptyOrderedHashMap", + ("OLD_SPACE", 0x02919): "EmptyOrderedHashSet", + ("OLD_SPACE", 0x02951): "EmptyPropertyCell", + ("OLD_SPACE", 0x02979): "EmptyWeakCell", + ("OLD_SPACE", 0x029e9): "NoElementsProtector", + ("OLD_SPACE", 0x02a11): "IsConcatSpreadableProtector", + ("OLD_SPACE", 0x02a21): "ArraySpeciesProtector", + ("OLD_SPACE", 0x02a49): "TypedArraySpeciesProtector", + ("OLD_SPACE", 0x02a71): "PromiseSpeciesProtector", + ("OLD_SPACE", 0x02a99): "StringLengthProtector", + ("OLD_SPACE", 0x02aa9): "ArrayIteratorProtector", + ("OLD_SPACE", 0x02ad1): "ArrayBufferNeuteringProtector", + ("OLD_SPACE", 0x02b59): "InfinityValue", + ("OLD_SPACE", 0x02b69): "MinusZeroValue", + ("OLD_SPACE", 0x02b79): "MinusInfinityValue", } # List of known V8 Frame Markers. @@ -360,7 +350,6 @@ "OPTIMIZED", "WASM_COMPILED", "WASM_TO_JS", - "WASM_TO_WASM", "JS_TO_WASM", "WASM_INTERPRETER_ENTRY", "C_WASM_ENTRY", @@ -368,6 +357,7 @@ "STUB", "BUILTIN_CONTINUATION", "JAVA_SCRIPT_BUILTIN_CONTINUATION", + "JAVA_SCRIPT_BUILTIN_CONTINUATION_WITH_CATCH", "INTERNAL", "CONSTRUCT", "ARGUMENTS_ADAPTOR", diff --git a/deps/v8/tools/valgrind/asan/dummy b/deps/v8/tools/valgrind/asan/dummy new file mode 100644 index 00000000000000..0e89814954ce81 --- /dev/null +++ b/deps/v8/tools/valgrind/asan/dummy @@ -0,0 +1,2 @@ +# src/base has some more tools in this folder, which we don't use. But we need +# to have the folder so that the data deps we inherit doesn't error out. \ No newline at end of file diff --git a/deps/v8/tools/whitespace.txt b/deps/v8/tools/whitespace.txt index 2367b2ccc89323..ed5e51f96a63e8 100644 --- a/deps/v8/tools/whitespace.txt +++ b/deps/v8/tools/whitespace.txt @@ -7,6 +7,6 @@ A Smi balks into a war and says: 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 bartender starts to shake the bottles........ +The bartender starts to shake the bottles....................... . . From fa8d33014decc77d3e00d2cb0a388420069383e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Thu, 31 May 2018 11:12:11 +0200 Subject: [PATCH 02/15] build: reset embedder string to "-node.0" --- common.gypi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common.gypi b/common.gypi index 31196e22535393..a4a5ae80b095a3 100644 --- a/common.gypi +++ b/common.gypi @@ -27,7 +27,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.9', + 'v8_embedder_string': '-node.0', # Enable disassembler for `--print-code` v8 options 'v8_enable_disassembler': 1, From 2dc98901fe9d29bbf070d2798d2cb5499ebdb566 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Tue, 13 Mar 2018 13:57:26 +0100 Subject: [PATCH 03/15] deps: update v8.gyp Synchronize source files list with upstream's BUILD.gn. --- common.gypi | 2 +- deps/v8/gypfiles/v8.gyp | 35 ++++++++++++++++++++--------------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/common.gypi b/common.gypi index a4a5ae80b095a3..9148252d519b94 100644 --- a/common.gypi +++ b/common.gypi @@ -27,7 +27,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.0', + 'v8_embedder_string': '-node.1', # Enable disassembler for `--print-code` v8 options 'v8_enable_disassembler': 1, diff --git a/deps/v8/gypfiles/v8.gyp b/deps/v8/gypfiles/v8.gyp index 601b8403cc4378..80ce748d1fecab 100644 --- a/deps/v8/gypfiles/v8.gyp +++ b/deps/v8/gypfiles/v8.gyp @@ -541,7 +541,6 @@ '../src/api.cc', '../src/api.h', '../src/api-arguments-inl.h', - '../src/api-arguments.cc', '../src/api-arguments.h', '../src/api-natives.cc', '../src/api-natives.h', @@ -657,8 +656,6 @@ '../src/compilation-cache.h', '../src/compilation-dependencies.cc', '../src/compilation-dependencies.h', - '../src/compilation-info.cc', - '../src/compilation-info.h', '../src/compilation-statistics.cc', '../src/compilation-statistics.h', '../src/compiler/access-builder.cc', @@ -941,9 +938,8 @@ '../src/extensions/trigger-failure-extension.h', '../src/external-reference-table.cc', '../src/external-reference-table.h', - '../src/factory-inl.h', - '../src/factory.cc', - '../src/factory.h', + '../src/external-reference.cc', + '../src/external-reference.h', '../src/fast-dtoa.cc', '../src/fast-dtoa.h', '../src/feedback-vector-inl.h', @@ -987,6 +983,9 @@ '../src/heap/concurrent-marking.h', '../src/heap/embedder-tracing.cc', '../src/heap/embedder-tracing.h', + '../src/heap/factory-inl.h', + '../src/heap/factory.cc', + '../src/heap/factory.h', '../src/heap/memory-reducer.cc', '../src/heap/memory-reducer.h', '../src/heap/gc-idle-time-handler.cc', @@ -1174,11 +1173,15 @@ '../src/objects/js-promise.h', '../src/objects/js-regexp-inl.h', '../src/objects/js-regexp.h', + '../src/objects/js-regexp-string-iterator-inl.h', + '../src/objects/js-regexp-string-iterator.h', '../src/objects/literal-objects.cc', '../src/objects/literal-objects-inl.h', '../src/objects/literal-objects.h', '../src/objects/map-inl.h', '../src/objects/map.h', + '../src/objects/maybe-object-inl.h', + '../src/objects/maybe-object.h', '../src/objects/microtask-inl.h', '../src/objects/microtask.h', '../src/objects/module-inl.h', @@ -1204,6 +1207,8 @@ '../src/objects/string-table.h', '../src/objects/template-objects.cc', '../src/objects/template-objects.h', + '../src/optimized-compilation-info.cc', + '../src/optimized-compilation-info.h', '../src/ostreams.cc', '../src/ostreams.h', '../src/parsing/duplicate-finder.h', @@ -1415,13 +1420,15 @@ '../src/trap-handler/trap-handler-internal.h', '../src/type-hints.cc', '../src/type-hints.h', - '../src/unicode-inl.h', - '../src/unicode.cc', - '../src/unicode.h', '../src/unicode-cache-inl.h', '../src/unicode-cache.h', '../src/unicode-decoder.cc', '../src/unicode-decoder.h', + '../src/unicode-inl.h', + '../src/unicode.cc', + '../src/unicode.h', + '../src/unoptimized-compilation-info.cc', + '../src/unoptimized-compilation-info.h', '../src/uri.cc', '../src/uri.h', '../src/utils-inl.h', @@ -1471,8 +1478,6 @@ '../src/wasm/wasm-code-manager.h', '../src/wasm/wasm-code-specialization.cc', '../src/wasm/wasm-code-specialization.h', - '../src/wasm/wasm-code-wrapper.cc', - '../src/wasm/wasm-code-wrapper.h', '../src/wasm/wasm-constants.h', '../src/wasm/wasm-debug.cc', '../src/wasm/wasm-engine.cc', @@ -2201,12 +2206,12 @@ '../include//libplatform/libplatform.h', '../include//libplatform/libplatform-export.h', '../include//libplatform/v8-tracing.h', - '../src/libplatform/default-background-task-runner.cc', - '../src/libplatform/default-background-task-runner.h', '../src/libplatform/default-foreground-task-runner.cc', '../src/libplatform/default-foreground-task-runner.h', '../src/libplatform/default-platform.cc', '../src/libplatform/default-platform.h', + '../src/libplatform/default-worker-threads-task-runner.cc', + '../src/libplatform/default-worker-threads-task-runner.h', '../src/libplatform/task-queue.cc', '../src/libplatform/task-queue.h', '../src/libplatform/tracing/trace-buffer.cc', @@ -2342,8 +2347,6 @@ '../src/js/prologue.js', '../src/js/array.js', '../src/js/typedarray.js', - '../src/js/messages.js', - '../src/js/spread.js', '../src/debug/mirrors.js', '../src/debug/debug.js', '../src/debug/liveedit.js', @@ -2473,6 +2476,8 @@ '../src/objects/js-array-inl.h', '../src/objects/js-regexp.h', '../src/objects/js-regexp-inl.h', + '../src/objects/js-regexp-string-iterator-inl.h', + '../src/objects/js-regexp-string-iterator.h', '../src/objects/map.h', '../src/objects/map-inl.h', '../src/objects/script.h', From 5d0ff083095aa9867a21f64b52203e62d468983e Mon Sep 17 00:00:00 2001 From: Gus Caplan Date: Fri, 13 Apr 2018 11:49:41 -0700 Subject: [PATCH 04/15] deps: cherry-pick 39d546a from upstream V8 Original commit message: [api] introduce v8::Value::IsModuleNamespaceObject This allows an embedder to check if a Value is a module namespace object. Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: Idffceff451dd5f5c6a53d4cb3ce02c1c2c5b653c Reviewed-on: https://chromium-review.googlesource.com/1011762 Reviewed-by: Georg Neis Commit-Queue: Georg Neis Cr-Commit-Position: refs/heads/master@{#52597} Refs: https://github.com/v8/v8/commit/39d546a24022b62b00aedf7b556ac6c9e2306aab PR-URL: https://github.com/nodejs/node/pull/20016 Reviewed-By: Ben Noordhuis Reviewed-By: Guy Bedford Reviewed-By: Colin Ihrig --- common.gypi | 2 +- deps/v8/AUTHORS | 1 + deps/v8/include/v8.h | 5 +++++ deps/v8/src/api.cc | 4 ++++ deps/v8/test/cctest/test-api.cc | 29 +++++++++++++++++++++++++++++ 5 files changed, 40 insertions(+), 1 deletion(-) diff --git a/common.gypi b/common.gypi index 9148252d519b94..08e4f36cec4d24 100644 --- a/common.gypi +++ b/common.gypi @@ -27,7 +27,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.1', + 'v8_embedder_string': '-node.2', # Enable disassembler for `--print-code` v8 options 'v8_enable_disassembler': 1, diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS index 3251716f2a55f5..4b5163961d282e 100644 --- a/deps/v8/AUTHORS +++ b/deps/v8/AUTHORS @@ -70,6 +70,7 @@ Felix Geisendörfer Filipe David Manana Franziska Hinkelmann Geoffrey Garside +Gus Caplan Gwang Yoon Hwang Henrique Ferreiro Hirofumi Mako diff --git a/deps/v8/include/v8.h b/deps/v8/include/v8.h index d520c866042a7a..c6e9250e4e938b 100644 --- a/deps/v8/include/v8.h +++ b/deps/v8/include/v8.h @@ -2378,6 +2378,11 @@ class V8_EXPORT Value : public Data { bool IsWebAssemblyCompiledModule() const; + /** + * Returns true if the value is a Module Namespace Object. + */ + bool IsModuleNamespaceObject() const; + V8_WARN_UNUSED_RESULT MaybeLocal ToBigInt( Local context) const; V8_WARN_UNUSED_RESULT MaybeLocal ToBoolean( diff --git a/deps/v8/src/api.cc b/deps/v8/src/api.cc index 8b177d041d447f..6dd669ee1133bf 100644 --- a/deps/v8/src/api.cc +++ b/deps/v8/src/api.cc @@ -3583,6 +3583,10 @@ bool Value::IsSetIterator() const { bool Value::IsPromise() const { return Utils::OpenHandle(this)->IsJSPromise(); } +bool Value::IsModuleNamespaceObject() const { + return Utils::OpenHandle(this)->IsJSModuleNamespace(); +} + MaybeLocal Value::ToString(Local context) const { auto obj = Utils::OpenHandle(this); if (obj->IsString()) return ToApiHandle(obj); diff --git a/deps/v8/test/cctest/test-api.cc b/deps/v8/test/cctest/test-api.cc index f126433578e336..261ada0f2bb308 100644 --- a/deps/v8/test/cctest/test-api.cc +++ b/deps/v8/test/cctest/test-api.cc @@ -27274,6 +27274,35 @@ TEST(ImportMeta) { CHECK(result->StrictEquals(Local::Cast(v8::Utils::ToLocal(meta)))); } +TEST(GetModuleNamespace) { + LocalContext context; + v8::Isolate* isolate = context->GetIsolate(); + v8::HandleScope scope(isolate); + + Local url = v8_str("www.google.com"); + Local source_text = v8_str("export default 5; export const a = 10;"); + v8::ScriptOrigin origin(url, Local(), Local(), + Local(), Local(), + Local(), Local(), + Local(), True(isolate)); + v8::ScriptCompiler::Source source(source_text, origin); + Local module = + v8::ScriptCompiler::CompileModule(isolate, &source).ToLocalChecked(); + module->InstantiateModule(context.local(), UnexpectedModuleResolveCallback) + .ToChecked(); + module->Evaluate(context.local()).ToLocalChecked(); + + Local ns_val = module->GetModuleNamespace(); + CHECK(ns_val->IsModuleNamespaceObject()); + Local ns = ns_val.As(); + CHECK(ns->Get(context.local(), v8_str("default")) + .ToLocalChecked() + ->StrictEquals(v8::Number::New(isolate, 5))); + CHECK(ns->Get(context.local(), v8_str("a")) + .ToLocalChecked() + ->StrictEquals(v8::Number::New(isolate, 10))); +} + TEST(GlobalTemplateWithDoubleProperty) { v8::Isolate* isolate = CcTest::isolate(); v8::HandleScope handle_scope(isolate); From eccc5094b255b5fa0a8b7510a9d642adde171746 Mon Sep 17 00:00:00 2001 From: Gus Caplan Date: Mon, 7 May 2018 08:36:43 -0500 Subject: [PATCH 05/15] v8: backport 9fb02b526f1cd3b859a530a01adb08bc0d089f4f Refs: https://github.com/v8/v8/commit/9fb02b526f1cd3b859a530a01adb08bc0d089f4f Original commit message: Allow function callbacks to have Proxy as receiver. R=verwaest@chromium.org Bug: v8:5773 Change-Id: Ifd29a1116ee8c86b8d8d24485bbfd19e260ab66b Reviewed-on: chromium-review.googlesource.com/1046088 Commit-Queue: Yang Guo Reviewed-by: Camillo Bruni Cr-Commit-Position: refs/heads/master@{#53015} PR-URL: https://github.com/nodejs/node/pull/20575 Reviewed-By: James M Snell Reviewed-By: Ben Noordhuis --- common.gypi | 2 +- deps/v8/src/builtins/builtins-api.cc | 41 ++++++++++++++-------------- deps/v8/test/cctest/test-api.cc | 28 +++++++++++++++++++ 3 files changed, 50 insertions(+), 21 deletions(-) diff --git a/common.gypi b/common.gypi index 08e4f36cec4d24..04a729e93b7021 100644 --- a/common.gypi +++ b/common.gypi @@ -27,7 +27,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.2', + 'v8_embedder_string': '-node.3', # Enable disassembler for `--print-code` v8 options 'v8_enable_disassembler': 1, diff --git a/deps/v8/src/builtins/builtins-api.cc b/deps/v8/src/builtins/builtins-api.cc index ce19bf86624ec5..cba404676a9420 100644 --- a/deps/v8/src/builtins/builtins-api.cc +++ b/deps/v8/src/builtins/builtins-api.cc @@ -21,17 +21,21 @@ namespace { // Returns the holder JSObject if the function can legally be called with this // receiver. Returns nullptr if the call is illegal. // TODO(dcarney): CallOptimization duplicates this logic, merge. -JSObject* GetCompatibleReceiver(Isolate* isolate, FunctionTemplateInfo* info, - JSObject* receiver) { +JSReceiver* GetCompatibleReceiver(Isolate* isolate, FunctionTemplateInfo* info, + JSReceiver* receiver) { Object* recv_type = info->signature(); // No signature, return holder. if (!recv_type->IsFunctionTemplateInfo()) return receiver; + // A Proxy cannot have been created from the signature template. + if (!receiver->IsJSObject()) return nullptr; + + JSObject* js_obj_receiver = JSObject::cast(receiver); FunctionTemplateInfo* signature = FunctionTemplateInfo::cast(recv_type); // Check the receiver. Fast path for receivers with no hidden prototypes. - if (signature->IsTemplateFor(receiver)) return receiver; - if (!receiver->map()->has_hidden_prototype()) return nullptr; - for (PrototypeIterator iter(isolate, receiver, kStartAtPrototype, + if (signature->IsTemplateFor(js_obj_receiver)) return receiver; + if (!js_obj_receiver->map()->has_hidden_prototype()) return nullptr; + for (PrototypeIterator iter(isolate, js_obj_receiver, kStartAtPrototype, PrototypeIterator::END_AT_NON_HIDDEN); !iter.IsAtEnd(); iter.Advance()) { JSObject* current = iter.GetCurrent(); @@ -45,8 +49,8 @@ V8_WARN_UNUSED_RESULT MaybeHandle HandleApiCallHelper( Isolate* isolate, Handle function, Handle new_target, Handle fun_data, Handle receiver, BuiltinArguments args) { - Handle js_receiver; - JSObject* raw_holder; + Handle js_receiver; + JSReceiver* raw_holder; if (is_construct) { DCHECK(args.receiver()->IsTheHole(isolate)); if (fun_data->instance_template()->IsUndefined(isolate)) { @@ -68,21 +72,18 @@ V8_WARN_UNUSED_RESULT MaybeHandle HandleApiCallHelper( raw_holder = *js_receiver; } else { DCHECK(receiver->IsJSReceiver()); - - if (!receiver->IsJSObject()) { - // This function cannot be called with the given receiver. Abort! - THROW_NEW_ERROR( - isolate, NewTypeError(MessageTemplate::kIllegalInvocation), Object); - } - - js_receiver = Handle::cast(receiver); + js_receiver = Handle::cast(receiver); if (!fun_data->accept_any_receiver() && - js_receiver->IsAccessCheckNeeded() && - !isolate->MayAccess(handle(isolate->context()), js_receiver)) { - isolate->ReportFailedAccessCheck(js_receiver); - RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, Object); - return isolate->factory()->undefined_value(); + js_receiver->IsAccessCheckNeeded()) { + // Proxies never need access checks. + DCHECK(js_receiver->IsJSObject()); + Handle js_obj_receiver = Handle::cast(js_receiver); + if (!isolate->MayAccess(handle(isolate->context()), js_obj_receiver)) { + isolate->ReportFailedAccessCheck(js_obj_receiver); + RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, Object); + return isolate->factory()->undefined_value(); + } } raw_holder = GetCompatibleReceiver(isolate, *fun_data, *js_receiver); diff --git a/deps/v8/test/cctest/test-api.cc b/deps/v8/test/cctest/test-api.cc index 261ada0f2bb308..2f552a9d9d9f6a 100644 --- a/deps/v8/test/cctest/test-api.cc +++ b/deps/v8/test/cctest/test-api.cc @@ -1088,6 +1088,34 @@ THREADED_PROFILED_TEST(FunctionTemplate) { TestFunctionTemplateAccessor(construct_callback, Return239Callback); } +static void FunctionCallbackForProxyTest( + const v8::FunctionCallbackInfo& info) { + info.GetReturnValue().Set(info.This()); +} + +THREADED_TEST(FunctionTemplateWithProxy) { + LocalContext env; + v8::Isolate* isolate = env->GetIsolate(); + v8::HandleScope scope(isolate); + + v8::Local function_template = + v8::FunctionTemplate::New(isolate, FunctionCallbackForProxyTest); + v8::Local function = + function_template->GetFunction(env.local()).ToLocalChecked(); + CHECK((*env)->Global()->Set(env.local(), v8_str("f"), function).FromJust()); + v8::Local proxy = + CompileRun("var proxy = new Proxy({}, {}); proxy"); + CHECK(proxy->IsProxy()); + + v8::Local result = CompileRun("f(proxy)"); + CHECK(result->Equals(env.local(), (*env)->Global()).FromJust()); + + result = CompileRun("f.call(proxy)"); + CHECK(result->Equals(env.local(), proxy).FromJust()); + + result = CompileRun("Reflect.apply(f, proxy, [1])"); + CHECK(result->Equals(env.local(), proxy).FromJust()); +} static void SimpleCallback(const v8::FunctionCallbackInfo& info) { ApiTestFuzzer::Fuzz(); From 28878691f3ae97ecf552b4c0f4a0a6dbc21b7e1c Mon Sep 17 00:00:00 2001 From: Eugene Ostroukhov Date: Wed, 16 May 2018 09:43:17 -0700 Subject: [PATCH 06/15] deps: cherry-pick 23652c5f from upstream V8 Original commit message: Custom tag for the traceEvents array This API will be used by Node.js to provide output compatible with Chrome devtools. Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I265495f8af39bfc78d7fdbe43ac308f0920e817d Reviewed-on: https://chromium-review.googlesource.com/1044491 Reviewed-by: Aleksey Kozyatinskiy Reviewed-by: Ulan Degenbaev Commit-Queue: Eugene Ostroukhov Cr-Commit-Position: refs/heads/master@{#53041} PR-URL: https://github.com/nodejs/node/pull/20608 Reviewed-By: James M Snell Reviewed-By: Ali Ijaz Sheikh Reviewed-By: Matteo Collina --- common.gypi | 2 +- deps/v8/include/libplatform/v8-tracing.h | 2 + .../src/libplatform/tracing/trace-writer.cc | 13 ++- .../v8/src/libplatform/tracing/trace-writer.h | 1 + .../test/cctest/libplatform/test-tracing.cc | 83 +++++++++++-------- 5 files changed, 63 insertions(+), 38 deletions(-) diff --git a/common.gypi b/common.gypi index 04a729e93b7021..dff0f092ebe451 100644 --- a/common.gypi +++ b/common.gypi @@ -27,7 +27,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.3', + 'v8_embedder_string': '-node.4', # Enable disassembler for `--print-code` v8 options 'v8_enable_disassembler': 1, diff --git a/deps/v8/include/libplatform/v8-tracing.h b/deps/v8/include/libplatform/v8-tracing.h index 9dcf3d7bca760a..e430e7c3502741 100644 --- a/deps/v8/include/libplatform/v8-tracing.h +++ b/deps/v8/include/libplatform/v8-tracing.h @@ -112,6 +112,8 @@ class V8_PLATFORM_EXPORT TraceWriter { virtual void Flush() = 0; static TraceWriter* CreateJSONTraceWriter(std::ostream& stream); + static TraceWriter* CreateJSONTraceWriter(std::ostream& stream, + const std::string& tag); private: // Disallow copy and assign diff --git a/deps/v8/src/libplatform/tracing/trace-writer.cc b/deps/v8/src/libplatform/tracing/trace-writer.cc index 36a8783499d140..7bfc7664694f8d 100644 --- a/deps/v8/src/libplatform/tracing/trace-writer.cc +++ b/deps/v8/src/libplatform/tracing/trace-writer.cc @@ -119,8 +119,12 @@ void JSONTraceWriter::AppendArgValue(ConvertableToTraceFormat* value) { stream_ << arg_stringified; } -JSONTraceWriter::JSONTraceWriter(std::ostream& stream) : stream_(stream) { - stream_ << "{\"traceEvents\":["; +JSONTraceWriter::JSONTraceWriter(std::ostream& stream) + : JSONTraceWriter(stream, "traceEvents") {} + +JSONTraceWriter::JSONTraceWriter(std::ostream& stream, const std::string& tag) + : stream_(stream) { + stream_ << "{\"" << tag << "\":["; } JSONTraceWriter::~JSONTraceWriter() { stream_ << "]}"; } @@ -171,6 +175,11 @@ TraceWriter* TraceWriter::CreateJSONTraceWriter(std::ostream& stream) { return new JSONTraceWriter(stream); } +TraceWriter* TraceWriter::CreateJSONTraceWriter(std::ostream& stream, + const std::string& tag) { + return new JSONTraceWriter(stream, tag); +} + } // namespace tracing } // namespace platform } // namespace v8 diff --git a/deps/v8/src/libplatform/tracing/trace-writer.h b/deps/v8/src/libplatform/tracing/trace-writer.h index 7e1bdc24d687ae..d81135138992f7 100644 --- a/deps/v8/src/libplatform/tracing/trace-writer.h +++ b/deps/v8/src/libplatform/tracing/trace-writer.h @@ -14,6 +14,7 @@ namespace tracing { class JSONTraceWriter : public TraceWriter { public: explicit JSONTraceWriter(std::ostream& stream); + JSONTraceWriter(std::ostream& stream, const std::string& tag); ~JSONTraceWriter(); void AppendTraceEvent(TraceObject* trace_event) override; void Flush() override; diff --git a/deps/v8/test/cctest/libplatform/test-tracing.cc b/deps/v8/test/cctest/libplatform/test-tracing.cc index da202057de312c..b949785bcfacbe 100644 --- a/deps/v8/test/cctest/libplatform/test-tracing.cc +++ b/deps/v8/test/cctest/libplatform/test-tracing.cc @@ -128,44 +128,42 @@ TEST(TestTraceBufferRingBuffer) { delete ring_buffer; } -TEST(TestJSONTraceWriter) { - std::ostringstream stream; - // Create a scope for the tracing controller to terminate the trace writer. - { - v8::Platform* old_platform = i::V8::GetCurrentPlatform(); - std::unique_ptr default_platform( - v8::platform::NewDefaultPlatform()); - i::V8::SetPlatformForTesting(default_platform.get()); - auto tracing = - base::make_unique(); - v8::platform::tracing::TracingController* tracing_controller = - tracing.get(); - static_cast(default_platform.get()) - ->SetTracingController(std::move(tracing)); - TraceWriter* writer = TraceWriter::CreateJSONTraceWriter(stream); +void PopulateJSONWriter(TraceWriter* writer) { + v8::Platform* old_platform = i::V8::GetCurrentPlatform(); + std::unique_ptr default_platform( + v8::platform::NewDefaultPlatform()); + i::V8::SetPlatformForTesting(default_platform.get()); + auto tracing = base::make_unique(); + v8::platform::tracing::TracingController* tracing_controller = tracing.get(); + static_cast(default_platform.get()) + ->SetTracingController(std::move(tracing)); - TraceBuffer* ring_buffer = - TraceBuffer::CreateTraceBufferRingBuffer(1, writer); - tracing_controller->Initialize(ring_buffer); - TraceConfig* trace_config = new TraceConfig(); - trace_config->AddIncludedCategory("v8-cat"); - tracing_controller->StartTracing(trace_config); + TraceBuffer* ring_buffer = + TraceBuffer::CreateTraceBufferRingBuffer(1, writer); + tracing_controller->Initialize(ring_buffer); + TraceConfig* trace_config = new TraceConfig(); + trace_config->AddIncludedCategory("v8-cat"); + tracing_controller->StartTracing(trace_config); - TraceObject trace_object; - trace_object.InitializeForTesting( - 'X', tracing_controller->GetCategoryGroupEnabled("v8-cat"), "Test0", - v8::internal::tracing::kGlobalScope, 42, 123, 0, nullptr, nullptr, - nullptr, nullptr, TRACE_EVENT_FLAG_HAS_ID, 11, 22, 100, 50, 33, 44); - writer->AppendTraceEvent(&trace_object); - trace_object.InitializeForTesting( - 'Y', tracing_controller->GetCategoryGroupEnabled("v8-cat"), "Test1", - v8::internal::tracing::kGlobalScope, 43, 456, 0, nullptr, nullptr, - nullptr, nullptr, 0, 55, 66, 110, 55, 77, 88); - writer->AppendTraceEvent(&trace_object); - tracing_controller->StopTracing(); - i::V8::SetPlatformForTesting(old_platform); - } + TraceObject trace_object; + trace_object.InitializeForTesting( + 'X', tracing_controller->GetCategoryGroupEnabled("v8-cat"), "Test0", + v8::internal::tracing::kGlobalScope, 42, 123, 0, nullptr, nullptr, + nullptr, nullptr, TRACE_EVENT_FLAG_HAS_ID, 11, 22, 100, 50, 33, 44); + writer->AppendTraceEvent(&trace_object); + trace_object.InitializeForTesting( + 'Y', tracing_controller->GetCategoryGroupEnabled("v8-cat"), "Test1", + v8::internal::tracing::kGlobalScope, 43, 456, 0, nullptr, nullptr, + nullptr, nullptr, 0, 55, 66, 110, 55, 77, 88); + writer->AppendTraceEvent(&trace_object); + tracing_controller->StopTracing(); + i::V8::SetPlatformForTesting(old_platform); +} +TEST(TestJSONTraceWriter) { + std::ostringstream stream; + TraceWriter* writer = TraceWriter::CreateJSONTraceWriter(stream); + PopulateJSONWriter(writer); std::string trace_str = stream.str(); std::string expected_trace_str = "{\"traceEvents\":[{\"pid\":11,\"tid\":22,\"ts\":100,\"tts\":50," @@ -177,6 +175,21 @@ TEST(TestJSONTraceWriter) { CHECK_EQ(expected_trace_str, trace_str); } +TEST(TestJSONTraceWriterWithCustomtag) { + std::ostringstream stream; + TraceWriter* writer = TraceWriter::CreateJSONTraceWriter(stream, "customTag"); + PopulateJSONWriter(writer); + std::string trace_str = stream.str(); + std::string expected_trace_str = + "{\"customTag\":[{\"pid\":11,\"tid\":22,\"ts\":100,\"tts\":50," + "\"ph\":\"X\",\"cat\":\"v8-cat\",\"name\":\"Test0\",\"dur\":33," + "\"tdur\":44,\"id\":\"0x2a\",\"args\":{}},{\"pid\":55,\"tid\":66," + "\"ts\":110,\"tts\":55,\"ph\":\"Y\",\"cat\":\"v8-cat\",\"name\":" + "\"Test1\",\"dur\":77,\"tdur\":88,\"args\":{}}]}"; + + CHECK_EQ(expected_trace_str, trace_str); +} + TEST(TestTracingController) { v8::Platform* old_platform = i::V8::GetCurrentPlatform(); std::unique_ptr default_platform( From 82368b32facec9639c02dc43f21d8194de64744c Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Fri, 18 May 2018 18:49:41 +0200 Subject: [PATCH 07/15] deps: cherry-pick ff0a9793334 from upstream V8 Original commit message: [api] Expose PreviewEntries as public API Turn `debug::EntriesPreview` into a public API. This is a straightforward approach to addressing nodejs/node#20409 (not relying on functionality behind `--allow-natives-syntax`) in Node.js. Refs: https://github.com/v8/v8/commit/ff0a979333408f544f081489411814b84df6e2d9 PR-URL: https://github.com/nodejs/node/pull/20719 Reviewed-By: Tiancheng "Timothy" Gu Reviewed-By: Gus Caplan Reviewed-By: James M Snell Reviewed-By: Matteo Collina Reviewed-By: Ruben Bridgewater --- common.gypi | 2 +- deps/v8/include/v8.h | 11 +++++++++++ deps/v8/src/api.cc | 19 +++++++++---------- deps/v8/src/debug/debug-interface.h | 4 ---- deps/v8/src/inspector/v8-debugger.cc | 4 +++- 5 files changed, 24 insertions(+), 16 deletions(-) diff --git a/common.gypi b/common.gypi index dff0f092ebe451..abad5d003c85f4 100644 --- a/common.gypi +++ b/common.gypi @@ -27,7 +27,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.4', + 'v8_embedder_string': '-node.5', # Enable disassembler for `--print-code` v8 options 'v8_enable_disassembler': 1, diff --git a/deps/v8/include/v8.h b/deps/v8/include/v8.h index c6e9250e4e938b..ed1a6d4af1ac02 100644 --- a/deps/v8/include/v8.h +++ b/deps/v8/include/v8.h @@ -3549,6 +3549,17 @@ class V8_EXPORT Object : public Value { */ Isolate* GetIsolate(); + /** + * If this object is a Set, Map, WeakSet or WeakMap, this returns a + * representation of the elements of this object as an array. + * If this object is a SetIterator or MapIterator, this returns all + * elements of the underlying collection, starting at the iterator's current + * position. + * For other types, this will return an empty MaybeLocal (without + * scheduling an exception). + */ + MaybeLocal PreviewEntries(bool* is_key_value); + static Local New(Isolate* isolate); V8_INLINE static Object* Cast(Value* obj); diff --git a/deps/v8/src/api.cc b/deps/v8/src/api.cc index 6dd669ee1133bf..25506d3930868d 100644 --- a/deps/v8/src/api.cc +++ b/deps/v8/src/api.cc @@ -9635,21 +9635,20 @@ int debug::EstimatedValueSize(Isolate* v8_isolate, v8::Local value) { return i::Handle::cast(object)->Size(); } -v8::MaybeLocal debug::EntriesPreview(Isolate* v8_isolate, - v8::Local value, - bool* is_key_value) { - i::Isolate* isolate = reinterpret_cast(v8_isolate); - ENTER_V8_NO_SCRIPT_NO_EXCEPTION(isolate); - if (value->IsMap()) { +v8::MaybeLocal v8::Object::PreviewEntries(bool* is_key_value) { + if (IsMap()) { *is_key_value = true; - return value.As()->AsArray(); + return Map::Cast(this)->AsArray(); } - if (value->IsSet()) { + if (IsSet()) { *is_key_value = false; - return value.As()->AsArray(); + return Set::Cast(this)->AsArray(); } - i::Handle object = Utils::OpenHandle(*value); + i::Handle object = Utils::OpenHandle(this); + i::Isolate* isolate = object->GetIsolate(); + Isolate* v8_isolate = reinterpret_cast(isolate); + ENTER_V8_NO_SCRIPT_NO_EXCEPTION(isolate); if (object->IsJSWeakCollection()) { *is_key_value = object->IsJSWeakMap(); return Utils::ToLocal(i::JSWeakCollection::GetEntries( diff --git a/deps/v8/src/debug/debug-interface.h b/deps/v8/src/debug/debug-interface.h index b3f3ad917c16f6..ec1a693550237a 100644 --- a/deps/v8/src/debug/debug-interface.h +++ b/deps/v8/src/debug/debug-interface.h @@ -212,10 +212,6 @@ void ResetBlackboxedStateCache(Isolate* isolate, int EstimatedValueSize(Isolate* isolate, v8::Local value); -v8::MaybeLocal EntriesPreview(Isolate* isolate, - v8::Local value, - bool* is_key_value); - enum Builtin { kObjectKeys, kObjectGetPrototypeOf, diff --git a/deps/v8/src/inspector/v8-debugger.cc b/deps/v8/src/inspector/v8-debugger.cc index 1cdbce27e63e0e..01e9acd9c9e6bd 100644 --- a/deps/v8/src/inspector/v8-debugger.cc +++ b/deps/v8/src/inspector/v8-debugger.cc @@ -29,8 +29,10 @@ v8::MaybeLocal collectionsEntries(v8::Local context, v8::Isolate* isolate = context->GetIsolate(); v8::Local entries; bool isKeyValue = false; - if (!v8::debug::EntriesPreview(isolate, value, &isKeyValue).ToLocal(&entries)) + if (!value->IsObject() || + !value.As()->PreviewEntries(&isKeyValue).ToLocal(&entries)) { return v8::MaybeLocal(); + } v8::Local wrappedEntries = v8::Array::New(isolate); CHECK(!isKeyValue || wrappedEntries->Length() % 2 == 0); From f835b2ea3e01f9c6342e76e72d6ec175f3eeb987 Mon Sep 17 00:00:00 2001 From: Maya Lekova Date: Mon, 14 May 2018 10:55:07 +0200 Subject: [PATCH 08/15] deps: backport 91ddb65d from upstream V8 Original commit message: Revert promises optimizations due to regressions in async hooks Revert "[async-await] Eliminate throwaway promise in async functions." This reverts commit a840f1f8f7e6c9ab32dec456a954612619855093. Revert "[async-generators] Also avoid throwaway promise here." This reverts commit feb545ceba5cb477ba883b46b60142f441ad5a3d. Revert "[async-await] Turn await closures into intrinsics." This reverts commit d97bb317386506a6798386b74647cbe0502fce35. Revert "[async-generators] Add fast-path for primitives in AsyncGeneratorYield." This reverts commit e57b500eb26dc595609613963468910eb4bcae2e. Revert "[async-generators] Add fast-path to skip "then" lookup in AsyncGeneratorResolve." This reverts commit c15802e11e30976528d1b711a9b9e6ff6b490117. Revert "[promises] Correctly run before/after hooks for await." This reverts commit ca7639239fc13e992e857710cbf7dbaac87163bf. Bug: v8:7253, v8:7745 Change-Id: I25ad0d2df3cfbc84dbb431aa25b268bce8a39e89 Reviewed-on: https://chromium-review.googlesource.com/1049975 Commit-Queue: Maya Lekova Reviewed-by: Benedikt Meurer Cr-Commit-Position: refs/heads/master@{#53139} Refs: https://github.com/v8/v8/commit/91ddb65d3b34c07c5026727de84dc91b5e0a43cd Fixes: https://github.com/nodejs/node/issues/20516 Co-authored-by: Matteo Collina --- common.gypi | 2 +- deps/v8/src/bootstrapper.cc | 72 ++++++ .../builtins/builtins-async-function-gen.cc | 96 +++++--- deps/v8/src/builtins/builtins-async-gen.cc | 207 ++++++++++++----- deps/v8/src/builtins/builtins-async-gen.h | 43 +++- .../builtins/builtins-async-generator-gen.cc | 209 ++++++++---------- deps/v8/src/builtins/builtins-definitions.h | 38 ++-- deps/v8/src/builtins/builtins-internal-gen.cc | 38 ++-- deps/v8/src/builtins/builtins-promise-gen.cc | 125 +++++------ deps/v8/src/builtins/builtins-promise-gen.h | 11 +- deps/v8/src/builtins/builtins.cc | 11 +- deps/v8/src/compiler/js-intrinsic-lowering.cc | 35 --- deps/v8/src/compiler/js-intrinsic-lowering.h | 4 - deps/v8/src/contexts.h | 85 ++++--- deps/v8/src/heap-symbols.h | 1 - deps/v8/src/interface-descriptors.h | 8 - deps/v8/src/interpreter/bytecode-generator.cc | 18 +- .../interpreter-intrinsics-generator.cc | 24 -- .../src/interpreter/interpreter-intrinsics.h | 4 - deps/v8/src/isolate.cc | 41 ++-- deps/v8/src/isolate.h | 5 +- deps/v8/src/lookup.cc | 7 - deps/v8/src/objects-debug.cc | 29 +-- deps/v8/src/objects-inl.h | 2 +- deps/v8/src/objects-printer.cc | 6 +- deps/v8/src/objects.cc | 29 +-- deps/v8/src/objects/js-promise.h | 6 - deps/v8/src/objects/promise-inl.h | 6 +- deps/v8/src/objects/promise.h | 26 +-- deps/v8/src/runtime/runtime-generator.cc | 24 -- deps/v8/src/runtime/runtime-promise.cc | 30 ++- deps/v8/src/runtime/runtime.h | 4 - .../AsyncGenerators.golden | 12 +- .../bytecode_expectations/ForAwaitOf.golden | 18 +- .../bytecode_expectations/ForOfLoop.golden | 2 +- .../StandardForLoop.golden | 2 +- deps/v8/test/cctest/test-api.cc | 6 - deps/v8/tools/v8heapconst.py | 14 +- 38 files changed, 688 insertions(+), 612 deletions(-) diff --git a/common.gypi b/common.gypi index abad5d003c85f4..077fd57f507e93 100644 --- a/common.gypi +++ b/common.gypi @@ -27,7 +27,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.5', + 'v8_embedder_string': '-node.6', # Enable disassembler for `--print-code` v8 options 'v8_enable_disassembler': 1, diff --git a/deps/v8/src/bootstrapper.cc b/deps/v8/src/bootstrapper.cc index 43c7527de9892a..2138b9c73d7db7 100644 --- a/deps/v8/src/bootstrapper.cc +++ b/deps/v8/src/bootstrapper.cc @@ -1584,6 +1584,50 @@ void Genesis::InitializeGlobal(Handle global_object, native_context()->set_async_iterator_value_unwrap_shared_fun(*info); } + { // --- A s y n c G e n e r a t o r --- + Handle await_caught = + SimpleCreateFunction(isolate, factory->empty_string(), + Builtins::kAsyncGeneratorAwaitCaught, 1, false); + native_context()->set_async_generator_await_caught(*await_caught); + + Handle await_uncaught = + SimpleCreateFunction(isolate, factory->empty_string(), + Builtins::kAsyncGeneratorAwaitUncaught, 1, false); + native_context()->set_async_generator_await_uncaught(*await_uncaught); + + Handle info = SimpleCreateSharedFunctionInfo( + isolate, Builtins::kAsyncGeneratorAwaitResolveClosure, + factory->empty_string(), 1); + native_context()->set_async_generator_await_resolve_shared_fun(*info); + + info = SimpleCreateSharedFunctionInfo( + isolate, Builtins::kAsyncGeneratorAwaitRejectClosure, + factory->empty_string(), 1); + native_context()->set_async_generator_await_reject_shared_fun(*info); + + info = SimpleCreateSharedFunctionInfo( + isolate, Builtins::kAsyncGeneratorYieldResolveClosure, + factory->empty_string(), 1); + native_context()->set_async_generator_yield_resolve_shared_fun(*info); + + info = SimpleCreateSharedFunctionInfo( + isolate, Builtins::kAsyncGeneratorReturnResolveClosure, + factory->empty_string(), 1); + native_context()->set_async_generator_return_resolve_shared_fun(*info); + + info = SimpleCreateSharedFunctionInfo( + isolate, Builtins::kAsyncGeneratorReturnClosedResolveClosure, + factory->empty_string(), 1); + native_context()->set_async_generator_return_closed_resolve_shared_fun( + *info); + + info = SimpleCreateSharedFunctionInfo( + isolate, Builtins::kAsyncGeneratorReturnClosedRejectClosure, + factory->empty_string(), 1); + native_context()->set_async_generator_return_closed_reject_shared_fun( + *info); + } + { // --- A r r a y --- Handle array_function = InstallFunction( global, "Array", JS_ARRAY_TYPE, JSArray::kSize, 0, @@ -3998,6 +4042,34 @@ void Bootstrapper::ExportFromRuntime(Isolate* isolate, JSFunction::SetPrototype(async_function_constructor, async_function_prototype); + { + Handle function = + SimpleCreateFunction(isolate, factory->empty_string(), + Builtins::kAsyncFunctionAwaitCaught, 2, false); + native_context->set_async_function_await_caught(*function); + } + + { + Handle function = + SimpleCreateFunction(isolate, factory->empty_string(), + Builtins::kAsyncFunctionAwaitUncaught, 2, false); + native_context->set_async_function_await_uncaught(*function); + } + + { + Handle info = SimpleCreateSharedFunctionInfo( + isolate, Builtins::kAsyncFunctionAwaitRejectClosure, + factory->empty_string(), 1); + native_context->set_async_function_await_reject_shared_fun(*info); + } + + { + Handle info = SimpleCreateSharedFunctionInfo( + isolate, Builtins::kAsyncFunctionAwaitResolveClosure, + factory->empty_string(), 1); + native_context->set_async_function_await_resolve_shared_fun(*info); + } + { Handle function = SimpleCreateFunction(isolate, factory->empty_string(), diff --git a/deps/v8/src/builtins/builtins-async-function-gen.cc b/deps/v8/src/builtins/builtins-async-function-gen.cc index 0db53c687e6210..0d0e34ee0da93a 100644 --- a/deps/v8/src/builtins/builtins-async-function-gen.cc +++ b/deps/v8/src/builtins/builtins-async-function-gen.cc @@ -21,18 +21,37 @@ class AsyncFunctionBuiltinsAssembler : public AsyncBuiltinsAssembler { Node* const awaited, Node* const outer_promise, const bool is_predicted_as_caught); - void AsyncFunctionAwaitResume(Node* const context, Node* const argument, - Node* const generator, - JSGeneratorObject::ResumeMode resume_mode); + void AsyncFunctionAwaitResumeClosure( + Node* const context, Node* const sent_value, + JSGeneratorObject::ResumeMode resume_mode); }; -void AsyncFunctionBuiltinsAssembler::AsyncFunctionAwaitResume( - Node* const context, Node* const argument, Node* const generator, +namespace { + +// Describe fields of Context associated with AsyncFunctionAwait resume +// closures. +// TODO(jgruber): Refactor to reuse code for upcoming async-generators. +class AwaitContext { + public: + enum Fields { kGeneratorSlot = Context::MIN_CONTEXT_SLOTS, kLength }; +}; + +} // anonymous namespace + +void AsyncFunctionBuiltinsAssembler::AsyncFunctionAwaitResumeClosure( + Node* context, Node* sent_value, JSGeneratorObject::ResumeMode resume_mode) { - CSA_ASSERT(this, IsJSGeneratorObject(generator)); DCHECK(resume_mode == JSGeneratorObject::kNext || resume_mode == JSGeneratorObject::kThrow); + Node* const generator = + LoadContextElement(context, AwaitContext::kGeneratorSlot); + CSA_SLOW_ASSERT(this, HasInstanceType(generator, JS_GENERATOR_OBJECT_TYPE)); + + // Inline version of GeneratorPrototypeNext / GeneratorPrototypeReturn with + // unnecessary runtime checks removed. + // TODO(jgruber): Refactor to reuse code from builtins-generator.cc. + // Ensure that the generator is neither closed nor running. CSA_SLOW_ASSERT( this, @@ -47,23 +66,31 @@ void AsyncFunctionBuiltinsAssembler::AsyncFunctionAwaitResume( // Resume the {receiver} using our trampoline. Callable callable = CodeFactory::ResumeGenerator(isolate()); - TailCallStub(callable, context, argument, generator); + CallStub(callable, context, sent_value, generator); + + // The resulting Promise is a throwaway, so it doesn't matter what it + // resolves to. What is important is that we don't end up keeping the + // whole chain of intermediate Promises alive by returning the return value + // of ResumeGenerator, as that would create a memory leak. } -TF_BUILTIN(AsyncFunctionAwaitFulfill, AsyncFunctionBuiltinsAssembler) { - Node* const argument = Parameter(Descriptor::kArgument); - Node* const generator = Parameter(Descriptor::kGenerator); +TF_BUILTIN(AsyncFunctionAwaitRejectClosure, AsyncFunctionBuiltinsAssembler) { + CSA_ASSERT_JS_ARGC_EQ(this, 1); + Node* const sentError = Parameter(Descriptor::kSentError); Node* const context = Parameter(Descriptor::kContext); - AsyncFunctionAwaitResume(context, argument, generator, - JSGeneratorObject::kNext); + + AsyncFunctionAwaitResumeClosure(context, sentError, + JSGeneratorObject::kThrow); + Return(UndefinedConstant()); } -TF_BUILTIN(AsyncFunctionAwaitReject, AsyncFunctionBuiltinsAssembler) { - Node* const argument = Parameter(Descriptor::kArgument); - Node* const generator = Parameter(Descriptor::kGenerator); +TF_BUILTIN(AsyncFunctionAwaitResolveClosure, AsyncFunctionBuiltinsAssembler) { + CSA_ASSERT_JS_ARGC_EQ(this, 1); + Node* const sentValue = Parameter(Descriptor::kSentValue); Node* const context = Parameter(Descriptor::kContext); - AsyncFunctionAwaitResume(context, argument, generator, - JSGeneratorObject::kThrow); + + AsyncFunctionAwaitResumeClosure(context, sentValue, JSGeneratorObject::kNext); + Return(UndefinedConstant()); } // ES#abstract-ops-async-function-await @@ -78,12 +105,25 @@ TF_BUILTIN(AsyncFunctionAwaitReject, AsyncFunctionBuiltinsAssembler) { void AsyncFunctionBuiltinsAssembler::AsyncFunctionAwait( Node* const context, Node* const generator, Node* const awaited, Node* const outer_promise, const bool is_predicted_as_caught) { - CSA_SLOW_ASSERT(this, IsJSGeneratorObject(generator)); - CSA_SLOW_ASSERT(this, IsJSPromise(outer_promise)); - - Await(context, generator, awaited, outer_promise, - Builtins::kAsyncFunctionAwaitFulfill, - Builtins::kAsyncFunctionAwaitReject, is_predicted_as_caught); + CSA_SLOW_ASSERT(this, HasInstanceType(generator, JS_GENERATOR_OBJECT_TYPE)); + CSA_SLOW_ASSERT(this, HasInstanceType(outer_promise, JS_PROMISE_TYPE)); + + ContextInitializer init_closure_context = [&](Node* context) { + StoreContextElementNoWriteBarrier(context, AwaitContext::kGeneratorSlot, + generator); + }; + + // TODO(jgruber): AsyncBuiltinsAssembler::Await currently does not reuse + // the awaited promise if it is already a promise. Reuse is non-spec compliant + // but part of our old behavior gives us a couple of percent + // performance boost. + // TODO(jgruber): Use a faster specialized version of + // InternalPerformPromiseThen. + + Await(context, generator, awaited, outer_promise, AwaitContext::kLength, + init_closure_context, Context::ASYNC_FUNCTION_AWAIT_RESOLVE_SHARED_FUN, + Context::ASYNC_FUNCTION_AWAIT_REJECT_SHARED_FUN, + is_predicted_as_caught); // Return outer promise to avoid adding an load of the outer promise before // suspending in BytecodeGenerator. @@ -93,28 +133,30 @@ void AsyncFunctionBuiltinsAssembler::AsyncFunctionAwait( // Called by the parser from the desugaring of 'await' when catch // prediction indicates that there is a locally surrounding catch block. TF_BUILTIN(AsyncFunctionAwaitCaught, AsyncFunctionBuiltinsAssembler) { + CSA_ASSERT_JS_ARGC_EQ(this, 3); Node* const generator = Parameter(Descriptor::kGenerator); - Node* const value = Parameter(Descriptor::kValue); + Node* const awaited = Parameter(Descriptor::kAwaited); Node* const outer_promise = Parameter(Descriptor::kOuterPromise); Node* const context = Parameter(Descriptor::kContext); static const bool kIsPredictedAsCaught = true; - AsyncFunctionAwait(context, generator, value, outer_promise, + AsyncFunctionAwait(context, generator, awaited, outer_promise, kIsPredictedAsCaught); } // Called by the parser from the desugaring of 'await' when catch // prediction indicates no locally surrounding catch block. TF_BUILTIN(AsyncFunctionAwaitUncaught, AsyncFunctionBuiltinsAssembler) { + CSA_ASSERT_JS_ARGC_EQ(this, 3); Node* const generator = Parameter(Descriptor::kGenerator); - Node* const value = Parameter(Descriptor::kValue); + Node* const awaited = Parameter(Descriptor::kAwaited); Node* const outer_promise = Parameter(Descriptor::kOuterPromise); Node* const context = Parameter(Descriptor::kContext); static const bool kIsPredictedAsCaught = false; - AsyncFunctionAwait(context, generator, value, outer_promise, + AsyncFunctionAwait(context, generator, awaited, outer_promise, kIsPredictedAsCaught); } diff --git a/deps/v8/src/builtins/builtins-async-gen.cc b/deps/v8/src/builtins/builtins-async-gen.cc index 073c96a2e09948..ba0226d7b3a42a 100644 --- a/deps/v8/src/builtins/builtins-async-gen.cc +++ b/deps/v8/src/builtins/builtins-async-gen.cc @@ -13,58 +13,6 @@ namespace internal { using compiler::Node; -void AsyncBuiltinsAssembler::Await(Node* context, Node* generator, Node* value, - Node* outer_promise, - Builtins::Name fulfill_builtin, - Builtins::Name reject_builtin, - Node* is_predicted_as_caught) { - CSA_SLOW_ASSERT(this, Word32Or(IsJSAsyncGeneratorObject(generator), - IsJSGeneratorObject(generator))); - CSA_SLOW_ASSERT(this, IsJSPromise(outer_promise)); - CSA_SLOW_ASSERT(this, IsBoolean(is_predicted_as_caught)); - - Node* const native_context = LoadNativeContext(context); - - // TODO(bmeurer): This could be optimized and folded into a single allocation. - Node* const promise = AllocateAndInitJSPromise(native_context); - Node* const promise_reactions = - LoadObjectField(promise, JSPromise::kReactionsOrResultOffset); - Node* const fulfill_handler = - HeapConstant(Builtins::CallableFor(isolate(), fulfill_builtin).code()); - Node* const reject_handler = - HeapConstant(Builtins::CallableFor(isolate(), reject_builtin).code()); - Node* const reaction = AllocatePromiseReaction( - promise_reactions, generator, fulfill_handler, reject_handler); - StoreObjectField(promise, JSPromise::kReactionsOrResultOffset, reaction); - PromiseSetHasHandler(promise); - - // Perform ! Call(promiseCapability.[[Resolve]], undefined, « value »). - CallBuiltin(Builtins::kResolvePromise, native_context, promise, value); - - // When debugging, we need to link from the {generator} to the - // {outer_promise} of the async function/generator. - Label done(this); - GotoIfNot(IsPromiseHookEnabledOrDebugIsActive(), &done); - CallRuntime(Runtime::kSetProperty, native_context, generator, - LoadRoot(Heap::kgenerator_outer_promise_symbolRootIndex), - outer_promise, SmiConstant(LanguageMode::kStrict)); - GotoIf(IsFalse(is_predicted_as_caught), &done); - GotoIf(TaggedIsSmi(value), &done); - GotoIfNot(IsJSPromise(value), &done); - PromiseSetHandledHint(value); - Goto(&done); - BIND(&done); -} - -void AsyncBuiltinsAssembler::Await(Node* context, Node* generator, Node* value, - Node* outer_promise, - Builtins::Name fulfill_builtin, - Builtins::Name reject_builtin, - bool is_predicted_as_caught) { - return Await(context, generator, value, outer_promise, fulfill_builtin, - reject_builtin, BooleanConstant(is_predicted_as_caught)); -} - namespace { // Describe fields of Context associated with the AsyncIterator unwrap closure. class ValueUnwrapContext { @@ -74,6 +22,161 @@ class ValueUnwrapContext { } // namespace +Node* AsyncBuiltinsAssembler::Await( + Node* context, Node* generator, Node* value, Node* outer_promise, + int context_length, const ContextInitializer& init_closure_context, + Node* on_resolve_context_index, Node* on_reject_context_index, + Node* is_predicted_as_caught) { + DCHECK_GE(context_length, Context::MIN_CONTEXT_SLOTS); + + Node* const native_context = LoadNativeContext(context); + + static const int kWrappedPromiseOffset = FixedArray::SizeFor(context_length); + static const int kThrowawayPromiseOffset = + kWrappedPromiseOffset + JSPromise::kSizeWithEmbedderFields; + static const int kResolveClosureOffset = + kThrowawayPromiseOffset + JSPromise::kSizeWithEmbedderFields; + static const int kRejectClosureOffset = + kResolveClosureOffset + JSFunction::kSizeWithoutPrototype; + static const int kTotalSize = + kRejectClosureOffset + JSFunction::kSizeWithoutPrototype; + + Node* const base = AllocateInNewSpace(kTotalSize); + Node* const closure_context = base; + { + // Initialize closure context + InitializeFunctionContext(native_context, closure_context, context_length); + init_closure_context(closure_context); + } + + // Let promiseCapability be ! NewPromiseCapability(%Promise%). + Node* const promise_fun = + LoadContextElement(native_context, Context::PROMISE_FUNCTION_INDEX); + CSA_ASSERT(this, IsFunctionWithPrototypeSlotMap(LoadMap(promise_fun))); + Node* const promise_map = + LoadObjectField(promise_fun, JSFunction::kPrototypeOrInitialMapOffset); + // Assert that the JSPromise map has an instance size is + // JSPromise::kSizeWithEmbedderFields. + CSA_ASSERT(this, WordEqual(LoadMapInstanceSizeInWords(promise_map), + IntPtrConstant(JSPromise::kSizeWithEmbedderFields / + kPointerSize))); + Node* const wrapped_value = InnerAllocate(base, kWrappedPromiseOffset); + { + // Initialize Promise + StoreMapNoWriteBarrier(wrapped_value, promise_map); + InitializeJSObjectFromMap( + wrapped_value, promise_map, + IntPtrConstant(JSPromise::kSizeWithEmbedderFields)); + PromiseInit(wrapped_value); + } + + Node* const throwaway = InnerAllocate(base, kThrowawayPromiseOffset); + { + // Initialize throwawayPromise + StoreMapNoWriteBarrier(throwaway, promise_map); + InitializeJSObjectFromMap( + throwaway, promise_map, + IntPtrConstant(JSPromise::kSizeWithEmbedderFields)); + PromiseInit(throwaway); + } + + Node* const on_resolve = InnerAllocate(base, kResolveClosureOffset); + { + // Initialize resolve handler + InitializeNativeClosure(closure_context, native_context, on_resolve, + on_resolve_context_index); + } + + Node* const on_reject = InnerAllocate(base, kRejectClosureOffset); + { + // Initialize reject handler + InitializeNativeClosure(closure_context, native_context, on_reject, + on_reject_context_index); + } + + { + // Add PromiseHooks if needed + Label next(this); + GotoIfNot(IsPromiseHookEnabledOrDebugIsActive(), &next); + CallRuntime(Runtime::kPromiseHookInit, context, wrapped_value, + outer_promise); + CallRuntime(Runtime::kPromiseHookInit, context, throwaway, wrapped_value); + Goto(&next); + BIND(&next); + } + + // Perform ! Call(promiseCapability.[[Resolve]], undefined, « promise »). + CallBuiltin(Builtins::kResolvePromise, context, wrapped_value, value); + + // The Promise will be thrown away and not handled, but it shouldn't trigger + // unhandled reject events as its work is done + PromiseSetHasHandler(throwaway); + + Label do_perform_promise_then(this); + GotoIfNot(IsDebugActive(), &do_perform_promise_then); + { + Label common(this); + GotoIf(TaggedIsSmi(value), &common); + GotoIfNot(HasInstanceType(value, JS_PROMISE_TYPE), &common); + { + // Mark the reject handler callback to be a forwarding edge, rather + // than a meaningful catch handler + Node* const key = + HeapConstant(factory()->promise_forwarding_handler_symbol()); + CallRuntime(Runtime::kSetProperty, context, on_reject, key, + TrueConstant(), SmiConstant(LanguageMode::kStrict)); + + GotoIf(IsFalse(is_predicted_as_caught), &common); + PromiseSetHandledHint(value); + } + + Goto(&common); + BIND(&common); + // Mark the dependency to outer Promise in case the throwaway Promise is + // found on the Promise stack + CSA_SLOW_ASSERT(this, HasInstanceType(outer_promise, JS_PROMISE_TYPE)); + + Node* const key = HeapConstant(factory()->promise_handled_by_symbol()); + CallRuntime(Runtime::kSetProperty, context, throwaway, key, outer_promise, + SmiConstant(LanguageMode::kStrict)); + } + + Goto(&do_perform_promise_then); + BIND(&do_perform_promise_then); + return CallBuiltin(Builtins::kPerformPromiseThen, context, wrapped_value, + on_resolve, on_reject, throwaway); +} + +void AsyncBuiltinsAssembler::InitializeNativeClosure(Node* context, + Node* native_context, + Node* function, + Node* context_index) { + Node* const function_map = LoadContextElement( + native_context, Context::STRICT_FUNCTION_WITHOUT_PROTOTYPE_MAP_INDEX); + // Ensure that we don't have to initialize prototype_or_initial_map field of + // JSFunction. + CSA_ASSERT(this, WordEqual(LoadMapInstanceSizeInWords(function_map), + IntPtrConstant(JSFunction::kSizeWithoutPrototype / + kPointerSize))); + STATIC_ASSERT(JSFunction::kSizeWithoutPrototype == 7 * kPointerSize); + StoreMapNoWriteBarrier(function, function_map); + StoreObjectFieldRoot(function, JSObject::kPropertiesOrHashOffset, + Heap::kEmptyFixedArrayRootIndex); + StoreObjectFieldRoot(function, JSObject::kElementsOffset, + Heap::kEmptyFixedArrayRootIndex); + StoreObjectFieldRoot(function, JSFunction::kFeedbackCellOffset, + Heap::kManyClosuresCellRootIndex); + + Node* shared_info = LoadContextElement(native_context, context_index); + CSA_ASSERT(this, IsSharedFunctionInfo(shared_info)); + StoreObjectFieldNoWriteBarrier( + function, JSFunction::kSharedFunctionInfoOffset, shared_info); + StoreObjectFieldNoWriteBarrier(function, JSFunction::kContextOffset, context); + + Node* const code = GetSharedFunctionInfoCode(shared_info); + StoreObjectFieldNoWriteBarrier(function, JSFunction::kCodeOffset, code); +} + Node* AsyncBuiltinsAssembler::CreateUnwrapClosure(Node* native_context, Node* done) { Node* const map = LoadContextElement( diff --git a/deps/v8/src/builtins/builtins-async-gen.h b/deps/v8/src/builtins/builtins-async-gen.h index 70f68a498b7922..45d7c8689a902a 100644 --- a/deps/v8/src/builtins/builtins-async-gen.h +++ b/deps/v8/src/builtins/builtins-async-gen.h @@ -16,23 +16,48 @@ class AsyncBuiltinsAssembler : public PromiseBuiltinsAssembler { : PromiseBuiltinsAssembler(state) {} protected: - void Await(Node* context, Node* generator, Node* value, Node* outer_promise, - Builtins::Name fulfill_builtin, Builtins::Name reject_builtin, - Node* is_predicted_as_caught); - void Await(Node* context, Node* generator, Node* value, Node* outer_promise, - Builtins::Name fulfill_builtin, Builtins::Name reject_builtin, - bool is_predicted_as_caught); + typedef std::function ContextInitializer; + + // Perform steps to resume generator after `value` is resolved. + // `on_reject_context_index` is an index into the Native Context, which should + // point to a SharedFunctioninfo instance used to create the closure. The + // value following the reject index should be a similar value for the resolve + // closure. Returns the Promise-wrapped `value`. + Node* Await(Node* context, Node* generator, Node* value, Node* outer_promise, + int context_length, + const ContextInitializer& init_closure_context, + Node* on_resolve_context_index, Node* on_reject_context_index, + Node* is_predicted_as_caught); + Node* Await(Node* context, Node* generator, Node* value, Node* outer_promise, + int context_length, + const ContextInitializer& init_closure_context, + int on_resolve_context_index, int on_reject_context_index, + Node* is_predicted_as_caught) { + return Await(context, generator, value, outer_promise, context_length, + init_closure_context, IntPtrConstant(on_resolve_context_index), + IntPtrConstant(on_reject_context_index), + is_predicted_as_caught); + } + Node* Await(Node* context, Node* generator, Node* value, Node* outer_promise, + int context_length, + const ContextInitializer& init_closure_context, + int on_resolve_context_index, int on_reject_context_index, + bool is_predicted_as_caught) { + return Await(context, generator, value, outer_promise, context_length, + init_closure_context, on_resolve_context_index, + on_reject_context_index, + BooleanConstant(is_predicted_as_caught)); + } // Return a new built-in function object as defined in // Async Iterator Value Unwrap Functions Node* CreateUnwrapClosure(Node* const native_context, Node* const done); private: + void InitializeNativeClosure(Node* context, Node* native_context, + Node* function, Node* context_index); Node* AllocateAsyncIteratorValueUnwrapContext(Node* native_context, Node* done); - Node* AllocateAwaitPromiseJobTask(Node* generator, Node* fulfill_handler, - Node* reject_handler, Node* promise, - Node* context); }; } // namespace internal diff --git a/deps/v8/src/builtins/builtins-async-generator-gen.cc b/deps/v8/src/builtins/builtins-async-generator-gen.cc index 290252da624940..dd6c644196451f 100644 --- a/deps/v8/src/builtins/builtins-async-generator-gen.cc +++ b/deps/v8/src/builtins/builtins-async-generator-gen.cc @@ -140,8 +140,8 @@ class AsyncGeneratorBuiltinsAssembler : public AsyncBuiltinsAssembler { // for AsyncGenerators. template void AsyncGeneratorAwait(bool is_catchable); - void AsyncGeneratorAwaitResume( - Node* context, Node* generator, Node* argument, + void AsyncGeneratorAwaitResumeClosure( + Node* context, Node* value, JSAsyncGeneratorObject::ResumeMode resume_mode); }; @@ -219,9 +219,11 @@ Node* AsyncGeneratorBuiltinsAssembler::AllocateAsyncGeneratorRequest( return request; } -void AsyncGeneratorBuiltinsAssembler::AsyncGeneratorAwaitResume( - Node* context, Node* generator, Node* argument, +void AsyncGeneratorBuiltinsAssembler::AsyncGeneratorAwaitResumeClosure( + Node* context, Node* value, JSAsyncGeneratorObject::ResumeMode resume_mode) { + Node* const generator = + LoadContextElement(context, AwaitContext::kGeneratorSlot); CSA_SLOW_ASSERT(this, TaggedIsAsyncGenerator(generator)); SetGeneratorNotAwaiting(generator); @@ -233,30 +235,36 @@ void AsyncGeneratorBuiltinsAssembler::AsyncGeneratorAwaitResume( JSGeneratorObject::kResumeModeOffset, SmiConstant(resume_mode)); - CallStub(CodeFactory::ResumeGenerator(isolate()), context, argument, - generator); + CallStub(CodeFactory::ResumeGenerator(isolate()), context, value, generator); TailCallBuiltin(Builtins::kAsyncGeneratorResumeNext, context, generator); } template void AsyncGeneratorBuiltinsAssembler::AsyncGeneratorAwait(bool is_catchable) { - Node* const generator = Parameter(Descriptor::kGenerator); - Node* const value = Parameter(Descriptor::kValue); - Node* const context = Parameter(Descriptor::kContext); + Node* generator = Parameter(Descriptor::kGenerator); + Node* value = Parameter(Descriptor::kAwaited); + Node* context = Parameter(Descriptor::kContext); CSA_SLOW_ASSERT(this, TaggedIsAsyncGenerator(generator)); Node* const request = LoadFirstAsyncGeneratorRequestFromQueue(generator); CSA_ASSERT(this, IsNotUndefined(request)); + ContextInitializer init_closure_context = [&](Node* context) { + StoreContextElementNoWriteBarrier(context, AwaitContext::kGeneratorSlot, + generator); + }; + Node* outer_promise = LoadObjectField(request, AsyncGeneratorRequest::kPromiseOffset); + const int resolve_index = Context::ASYNC_GENERATOR_AWAIT_RESOLVE_SHARED_FUN; + const int reject_index = Context::ASYNC_GENERATOR_AWAIT_REJECT_SHARED_FUN; + SetGeneratorAwaiting(generator); - Await(context, generator, value, outer_promise, - Builtins::kAsyncGeneratorAwaitFulfill, - Builtins::kAsyncGeneratorAwaitReject, is_catchable); + Await(context, generator, value, outer_promise, AwaitContext::kLength, + init_closure_context, resolve_index, reject_index, is_catchable); Return(UndefinedConstant()); } @@ -367,20 +375,18 @@ TF_BUILTIN(AsyncGeneratorPrototypeThrow, AsyncGeneratorBuiltinsAssembler) { "[AsyncGenerator].prototype.throw"); } -TF_BUILTIN(AsyncGeneratorAwaitFulfill, AsyncGeneratorBuiltinsAssembler) { - Node* const generator = Parameter(Descriptor::kGenerator); - Node* const argument = Parameter(Descriptor::kArgument); - Node* const context = Parameter(Descriptor::kContext); - AsyncGeneratorAwaitResume(context, generator, argument, - JSAsyncGeneratorObject::kNext); +TF_BUILTIN(AsyncGeneratorAwaitResolveClosure, AsyncGeneratorBuiltinsAssembler) { + Node* value = Parameter(Descriptor::kValue); + Node* context = Parameter(Descriptor::kContext); + AsyncGeneratorAwaitResumeClosure(context, value, + JSAsyncGeneratorObject::kNext); } -TF_BUILTIN(AsyncGeneratorAwaitReject, AsyncGeneratorBuiltinsAssembler) { - Node* const generator = Parameter(Descriptor::kGenerator); - Node* const argument = Parameter(Descriptor::kArgument); - Node* const context = Parameter(Descriptor::kContext); - AsyncGeneratorAwaitResume(context, generator, argument, - JSAsyncGeneratorObject::kThrow); +TF_BUILTIN(AsyncGeneratorAwaitRejectClosure, AsyncGeneratorBuiltinsAssembler) { + Node* value = Parameter(Descriptor::kValue); + Node* context = Parameter(Descriptor::kContext); + AsyncGeneratorAwaitResumeClosure(context, value, + JSAsyncGeneratorObject::kThrow); } TF_BUILTIN(AsyncGeneratorAwaitUncaught, AsyncGeneratorBuiltinsAssembler) { @@ -518,34 +524,11 @@ TF_BUILTIN(AsyncGeneratorResolve, AsyncGeneratorBuiltinsAssembler) { done); } - // We know that {iter_result} itself doesn't have any "then" property and - // we also know that the [[Prototype]] of {iter_result} is the intrinsic - // %ObjectPrototype%. So we can skip the [[Resolve]] logic here completely - // and directly call into the FulfillPromise operation if we can prove - // that the %ObjectPrototype% also doesn't have any "then" property. This - // is guarded by the Promise#then protector. - Label if_fast(this), if_slow(this, Label::kDeferred), return_promise(this); - GotoIfForceSlowPath(&if_slow); - Branch(IsPromiseThenProtectorCellInvalid(), &if_slow, &if_fast); - - BIND(&if_fast); - { - // Skip the "then" on {iter_result} and directly fulfill the {promise} - // with the {iter_result}. - CallBuiltin(Builtins::kFulfillPromise, context, promise, iter_result); - Goto(&return_promise); - } - - BIND(&if_slow); - { - // Perform Call(promiseCapability.[[Resolve]], undefined, «iteratorResult»). - CallBuiltin(Builtins::kResolvePromise, context, promise, iter_result); - Goto(&return_promise); - } + // Perform Call(promiseCapability.[[Resolve]], undefined, «iteratorResult»). + CallBuiltin(Builtins::kResolvePromise, context, promise, iter_result); // Per spec, AsyncGeneratorResolve() returns undefined. However, for the // benefit of %TraceExit(), return the Promise. - BIND(&return_promise); Return(promise); } @@ -571,54 +554,31 @@ TF_BUILTIN(AsyncGeneratorYield, AsyncGeneratorBuiltinsAssembler) { Node* const request = LoadFirstAsyncGeneratorRequestFromQueue(generator); Node* const outer_promise = LoadPromiseFromAsyncGeneratorRequest(request); - // Mark the generator as "awaiting". - SetGeneratorAwaiting(generator); + ContextInitializer init_closure_context = [&](Node* context) { + StoreContextElementNoWriteBarrier(context, AwaitContext::kGeneratorSlot, + generator); + }; - // We can skip the creation of a temporary promise and the whole - // [[Resolve]] logic if we already know that the {value} that's - // being yielded is a primitive, as in that case we would immediately - // fulfill the temporary promise anyways and schedule a fulfill - // reaction job. This gives a nice performance boost for async - // generators that yield only primitives, e.g. numbers or strings. - Label if_primitive(this), if_generic(this); - GotoIfForceSlowPath(&if_generic); - GotoIf(IsPromiseHookEnabledOrDebugIsActive(), &if_generic); - GotoIf(TaggedIsSmi(value), &if_primitive); - Branch(IsJSReceiver(value), &if_generic, &if_primitive); - - BIND(&if_generic); - { - Await(context, generator, value, outer_promise, - Builtins::kAsyncGeneratorYieldFulfill, - Builtins::kAsyncGeneratorAwaitReject, is_caught); - Return(UndefinedConstant()); - } + const int on_resolve = Context::ASYNC_GENERATOR_YIELD_RESOLVE_SHARED_FUN; + const int on_reject = Context::ASYNC_GENERATOR_AWAIT_REJECT_SHARED_FUN; - BIND(&if_primitive); - { - // For primitive {value}s we can skip the allocation of the temporary - // promise and the resolution of that, and directly allocate the fulfill - // reaction job. - Node* const microtask = AllocatePromiseReactionJobTask( - Heap::kPromiseFulfillReactionJobTaskMapRootIndex, context, value, - HeapConstant(Builtins::CallableFor( - isolate(), Builtins::kAsyncGeneratorYieldFulfill) - .code()), - generator); - TailCallBuiltin(Builtins::kEnqueueMicrotask, context, microtask); - } + SetGeneratorAwaiting(generator); + Await(context, generator, value, outer_promise, AwaitContext::kLength, + init_closure_context, on_resolve, on_reject, is_caught); + Return(UndefinedConstant()); } -TF_BUILTIN(AsyncGeneratorYieldFulfill, AsyncGeneratorBuiltinsAssembler) { +TF_BUILTIN(AsyncGeneratorYieldResolveClosure, AsyncGeneratorBuiltinsAssembler) { Node* const context = Parameter(Descriptor::kContext); - Node* const generator = Parameter(Descriptor::kGenerator); - Node* const argument = Parameter(Descriptor::kArgument); + Node* const value = Parameter(Descriptor::kValue); + Node* const generator = + LoadContextElement(context, AwaitContext::kGeneratorSlot); SetGeneratorNotAwaiting(generator); // Per proposal-async-iteration/#sec-asyncgeneratoryield step 9 // Return ! AsyncGeneratorResolve(_F_.[[Generator]], _value_, *false*). - CallBuiltin(Builtins::kAsyncGeneratorResolve, context, generator, argument, + CallBuiltin(Builtins::kAsyncGeneratorResolve, context, generator, value, FalseConstant()); TailCallBuiltin(Builtins::kAsyncGeneratorResumeNext, context, generator); @@ -644,33 +604,39 @@ TF_BUILTIN(AsyncGeneratorReturn, AsyncGeneratorBuiltinsAssembler) { Node* const generator = Parameter(Descriptor::kGenerator); Node* const value = Parameter(Descriptor::kValue); Node* const is_caught = Parameter(Descriptor::kIsCaught); - Node* const context = Parameter(Descriptor::kContext); Node* const req = LoadFirstAsyncGeneratorRequestFromQueue(generator); - Node* const outer_promise = LoadPromiseFromAsyncGeneratorRequest(req); CSA_ASSERT(this, IsNotUndefined(req)); - Label if_closed(this, Label::kDeferred), if_not_closed(this), done(this); + Label perform_await(this); + VARIABLE(var_on_resolve, MachineType::PointerRepresentation(), + IntPtrConstant( + Context::ASYNC_GENERATOR_RETURN_CLOSED_RESOLVE_SHARED_FUN)); + VARIABLE( + var_on_reject, MachineType::PointerRepresentation(), + IntPtrConstant(Context::ASYNC_GENERATOR_RETURN_CLOSED_REJECT_SHARED_FUN)); + Node* const state = LoadGeneratorState(generator); - SetGeneratorAwaiting(generator); - Branch(IsGeneratorStateClosed(state), &if_closed, &if_not_closed); + GotoIf(IsGeneratorStateClosed(state), &perform_await); + var_on_resolve.Bind( + IntPtrConstant(Context::ASYNC_GENERATOR_RETURN_RESOLVE_SHARED_FUN)); + var_on_reject.Bind( + IntPtrConstant(Context::ASYNC_GENERATOR_AWAIT_REJECT_SHARED_FUN)); + Goto(&perform_await); - BIND(&if_closed); - { - Await(context, generator, value, outer_promise, - Builtins::kAsyncGeneratorReturnClosedFulfill, - Builtins::kAsyncGeneratorReturnClosedReject, is_caught); - Goto(&done); - } + BIND(&perform_await); - BIND(&if_not_closed); - { - Await(context, generator, value, outer_promise, - Builtins::kAsyncGeneratorReturnFulfill, - Builtins::kAsyncGeneratorAwaitReject, is_caught); - Goto(&done); - } + ContextInitializer init_closure_context = [&](Node* context) { + StoreContextElementNoWriteBarrier(context, AwaitContext::kGeneratorSlot, + generator); + }; + + SetGeneratorAwaiting(generator); + Node* const context = Parameter(Descriptor::kContext); + Node* const outer_promise = LoadPromiseFromAsyncGeneratorRequest(req); + Await(context, generator, value, outer_promise, AwaitContext::kLength, + init_closure_context, var_on_resolve.value(), var_on_reject.value(), + is_caught); - BIND(&done); Return(UndefinedConstant()); } @@ -678,44 +644,47 @@ TF_BUILTIN(AsyncGeneratorReturn, AsyncGeneratorBuiltinsAssembler) { // Resume the generator with "return" resume_mode, and finally perform // AsyncGeneratorResumeNext. Per // proposal-async-iteration/#sec-asyncgeneratoryield step 8.e -TF_BUILTIN(AsyncGeneratorReturnFulfill, AsyncGeneratorBuiltinsAssembler) { - Node* const generator = Parameter(Descriptor::kGenerator); - Node* const argument = Parameter(Descriptor::kArgument); +TF_BUILTIN(AsyncGeneratorReturnResolveClosure, + AsyncGeneratorBuiltinsAssembler) { Node* const context = Parameter(Descriptor::kContext); - AsyncGeneratorAwaitResume(context, generator, argument, - JSGeneratorObject::kReturn); + Node* const value = Parameter(Descriptor::kValue); + AsyncGeneratorAwaitResumeClosure(context, value, JSGeneratorObject::kReturn); } // On-resolve closure for Await in AsyncGeneratorReturn // Perform AsyncGeneratorResolve({awaited_value}, true) and finally perform // AsyncGeneratorResumeNext. -TF_BUILTIN(AsyncGeneratorReturnClosedFulfill, AsyncGeneratorBuiltinsAssembler) { - Node* const generator = Parameter(Descriptor::kGenerator); - Node* const argument = Parameter(Descriptor::kArgument); +TF_BUILTIN(AsyncGeneratorReturnClosedResolveClosure, + AsyncGeneratorBuiltinsAssembler) { Node* const context = Parameter(Descriptor::kContext); + Node* const value = Parameter(Descriptor::kValue); + Node* const generator = + LoadContextElement(context, AwaitContext::kGeneratorSlot); SetGeneratorNotAwaiting(generator); // https://tc39.github.io/proposal-async-iteration/ // #async-generator-resume-next-return-processor-fulfilled step 2: // Return ! AsyncGeneratorResolve(_F_.[[Generator]], _value_, *true*). - CallBuiltin(Builtins::kAsyncGeneratorResolve, context, generator, argument, + CallBuiltin(Builtins::kAsyncGeneratorResolve, context, generator, value, TrueConstant()); TailCallBuiltin(Builtins::kAsyncGeneratorResumeNext, context, generator); } -TF_BUILTIN(AsyncGeneratorReturnClosedReject, AsyncGeneratorBuiltinsAssembler) { - Node* const generator = Parameter(Descriptor::kGenerator); - Node* const argument = Parameter(Descriptor::kArgument); +TF_BUILTIN(AsyncGeneratorReturnClosedRejectClosure, + AsyncGeneratorBuiltinsAssembler) { Node* const context = Parameter(Descriptor::kContext); + Node* const value = Parameter(Descriptor::kValue); + Node* const generator = + LoadContextElement(context, AwaitContext::kGeneratorSlot); SetGeneratorNotAwaiting(generator); // https://tc39.github.io/proposal-async-iteration/ // #async-generator-resume-next-return-processor-rejected step 2: // Return ! AsyncGeneratorReject(_F_.[[Generator]], _reason_). - CallBuiltin(Builtins::kAsyncGeneratorReject, context, generator, argument); + CallBuiltin(Builtins::kAsyncGeneratorReject, context, generator, value); TailCallBuiltin(Builtins::kAsyncGeneratorResumeNext, context, generator); } diff --git a/deps/v8/src/builtins/builtins-definitions.h b/deps/v8/src/builtins/builtins-definitions.h index 0f60dfd97e8888..5f06abeceb0d76 100644 --- a/deps/v8/src/builtins/builtins-definitions.h +++ b/deps/v8/src/builtins/builtins-definitions.h @@ -381,10 +381,10 @@ namespace internal { CPP(ArrayBufferPrototypeSlice) \ \ /* AsyncFunction */ \ - TFC(AsyncFunctionAwaitFulfill, PromiseReactionHandler, 1) \ - TFC(AsyncFunctionAwaitReject, PromiseReactionHandler, 1) \ - TFS(AsyncFunctionAwaitCaught, kGenerator, kValue, kOuterPromise) \ - TFS(AsyncFunctionAwaitUncaught, kGenerator, kValue, kOuterPromise) \ + TFJ(AsyncFunctionAwaitCaught, 3, kGenerator, kAwaited, kOuterPromise) \ + TFJ(AsyncFunctionAwaitUncaught, 3, kGenerator, kAwaited, kOuterPromise) \ + TFJ(AsyncFunctionAwaitRejectClosure, 1, kSentError) \ + TFJ(AsyncFunctionAwaitResolveClosure, 1, kSentValue) \ TFJ(AsyncFunctionPromiseCreate, 0) \ TFJ(AsyncFunctionPromiseRelease, 1, kPromise) \ \ @@ -838,8 +838,8 @@ namespace internal { /* ES #sec-promise.prototype.catch */ \ TFJ(PromisePrototypeCatch, 1, kOnRejected) \ /* ES #sec-promisereactionjob */ \ - TFS(PromiseRejectReactionJob, kReason, kHandler, kPayload) \ - TFS(PromiseFulfillReactionJob, kValue, kHandler, kPayload) \ + TFS(PromiseRejectReactionJob, kReason, kHandler, kPromiseOrCapability) \ + TFS(PromiseFulfillReactionJob, kValue, kHandler, kPromiseOrCapability) \ /* ES #sec-promiseresolvethenablejob */ \ TFS(PromiseResolveThenableJob, kPromiseToResolve, kThenable, kThen) \ /* ES #sec-promise.resolve */ \ @@ -1203,17 +1203,6 @@ namespace internal { \ /* AsyncGenerator */ \ \ - /* Await (proposal-async-iteration/#await), with resume behaviour */ \ - /* specific to Async Generators. Internal / Not exposed to JS code. */ \ - TFS(AsyncGeneratorAwaitCaught, kGenerator, kValue) \ - TFS(AsyncGeneratorAwaitUncaught, kGenerator, kValue) \ - TFC(AsyncGeneratorAwaitFulfill, PromiseReactionHandler, 1) \ - TFC(AsyncGeneratorAwaitReject, PromiseReactionHandler, 1) \ - TFC(AsyncGeneratorYieldFulfill, PromiseReactionHandler, 1) \ - TFC(AsyncGeneratorReturnClosedFulfill, PromiseReactionHandler, 1) \ - TFC(AsyncGeneratorReturnClosedReject, PromiseReactionHandler, 1) \ - TFC(AsyncGeneratorReturnFulfill, PromiseReactionHandler, 1) \ - \ TFS(AsyncGeneratorResolve, kGenerator, kValue, kDone) \ TFS(AsyncGeneratorReject, kGenerator, kValue) \ TFS(AsyncGeneratorYield, kGenerator, kValue, kIsCaught) \ @@ -1236,6 +1225,17 @@ namespace internal { TFJ(AsyncGeneratorPrototypeThrow, \ SharedFunctionInfo::kDontAdaptArgumentsSentinel) \ \ + /* Await (proposal-async-iteration/#await), with resume behaviour */ \ + /* specific to Async Generators. Internal / Not exposed to JS code. */ \ + TFJ(AsyncGeneratorAwaitCaught, 2, kGenerator, kAwaited) \ + TFJ(AsyncGeneratorAwaitUncaught, 2, kGenerator, kAwaited) \ + TFJ(AsyncGeneratorAwaitResolveClosure, 1, kValue) \ + TFJ(AsyncGeneratorAwaitRejectClosure, 1, kValue) \ + TFJ(AsyncGeneratorYieldResolveClosure, 1, kValue) \ + TFJ(AsyncGeneratorReturnClosedResolveClosure, 1, kValue) \ + TFJ(AsyncGeneratorReturnClosedRejectClosure, 1, kValue) \ + TFJ(AsyncGeneratorReturnResolveClosure, 1, kValue) \ + \ /* Async-from-Sync Iterator */ \ \ /* %AsyncFromSyncIteratorPrototype% */ \ @@ -1284,7 +1284,11 @@ namespace internal { V(AsyncFromSyncIteratorPrototypeNext) \ V(AsyncFromSyncIteratorPrototypeReturn) \ V(AsyncFromSyncIteratorPrototypeThrow) \ + V(AsyncFunctionAwaitCaught) \ + V(AsyncFunctionAwaitUncaught) \ V(AsyncGeneratorResolve) \ + V(AsyncGeneratorAwaitCaught) \ + V(AsyncGeneratorAwaitUncaught) \ V(PromiseAll) \ V(PromiseConstructor) \ V(PromiseConstructorLazyDeoptContinuation) \ diff --git a/deps/v8/src/builtins/builtins-internal-gen.cc b/deps/v8/src/builtins/builtins-internal-gen.cc index e1f4aea4052549..4e533ad1c4c503 100644 --- a/deps/v8/src/builtins/builtins-internal-gen.cc +++ b/deps/v8/src/builtins/builtins-internal-gen.cc @@ -669,7 +669,7 @@ class InternalBuiltinsAssembler : public CodeStubAssembler { void LeaveMicrotaskContext(); void RunPromiseHook(Runtime::FunctionId id, TNode context, - SloppyTNode payload); + SloppyTNode promise_or_capability); TNode GetPendingException() { auto ref = ExternalReference(kPendingExceptionAddress, isolate()); @@ -790,12 +790,20 @@ void InternalBuiltinsAssembler::LeaveMicrotaskContext() { void InternalBuiltinsAssembler::RunPromiseHook( Runtime::FunctionId id, TNode context, - SloppyTNode payload) { + SloppyTNode promise_or_capability) { Label hook(this, Label::kDeferred), done_hook(this); Branch(IsPromiseHookEnabledOrDebugIsActive(), &hook, &done_hook); BIND(&hook); { - CallRuntime(id, context, payload); + // Get to the underlying JSPromise instance. + Node* const promise = Select( + IsJSPromise(promise_or_capability), + [=] { return promise_or_capability; }, + [=] { + return CAST(LoadObjectField(promise_or_capability, + PromiseCapability::kPromiseOffset)); + }); + CallRuntime(id, context, promise); Goto(&done_hook); } BIND(&done_hook); @@ -1008,19 +1016,21 @@ TF_BUILTIN(RunMicrotasks, InternalBuiltinsAssembler) { LoadObjectField(microtask, PromiseReactionJobTask::kArgumentOffset); Node* const handler = LoadObjectField(microtask, PromiseReactionJobTask::kHandlerOffset); - Node* const payload = - LoadObjectField(microtask, PromiseReactionJobTask::kPayloadOffset); + Node* const promise_or_capability = LoadObjectField( + microtask, PromiseReactionJobTask::kPromiseOrCapabilityOffset); // Run the promise before/debug hook if enabled. - RunPromiseHook(Runtime::kPromiseHookBefore, microtask_context, payload); + RunPromiseHook(Runtime::kPromiseHookBefore, microtask_context, + promise_or_capability); Node* const result = CallBuiltin(Builtins::kPromiseFulfillReactionJob, microtask_context, - argument, handler, payload); + argument, handler, promise_or_capability); GotoIfException(result, &if_exception, &var_exception); // Run the promise after/debug hook if enabled. - RunPromiseHook(Runtime::kPromiseHookAfter, microtask_context, payload); + RunPromiseHook(Runtime::kPromiseHookAfter, microtask_context, + promise_or_capability); LeaveMicrotaskContext(); SetCurrentContext(current_context); @@ -1041,19 +1051,21 @@ TF_BUILTIN(RunMicrotasks, InternalBuiltinsAssembler) { LoadObjectField(microtask, PromiseReactionJobTask::kArgumentOffset); Node* const handler = LoadObjectField(microtask, PromiseReactionJobTask::kHandlerOffset); - Node* const payload = - LoadObjectField(microtask, PromiseReactionJobTask::kPayloadOffset); + Node* const promise_or_capability = LoadObjectField( + microtask, PromiseReactionJobTask::kPromiseOrCapabilityOffset); // Run the promise before/debug hook if enabled. - RunPromiseHook(Runtime::kPromiseHookBefore, microtask_context, payload); + RunPromiseHook(Runtime::kPromiseHookBefore, microtask_context, + promise_or_capability); Node* const result = CallBuiltin(Builtins::kPromiseRejectReactionJob, microtask_context, - argument, handler, payload); + argument, handler, promise_or_capability); GotoIfException(result, &if_exception, &var_exception); // Run the promise after/debug hook if enabled. - RunPromiseHook(Runtime::kPromiseHookAfter, microtask_context, payload); + RunPromiseHook(Runtime::kPromiseHookAfter, microtask_context, + promise_or_capability); LeaveMicrotaskContext(); SetCurrentContext(current_context); diff --git a/deps/v8/src/builtins/builtins-promise-gen.cc b/deps/v8/src/builtins/builtins-promise-gen.cc index dd38dbc5435cab..868b45a8316ff5 100644 --- a/deps/v8/src/builtins/builtins-promise-gen.cc +++ b/deps/v8/src/builtins/builtins-promise-gen.cc @@ -391,15 +391,15 @@ TF_BUILTIN(PerformPromiseThen, PromiseBuiltinsAssembler) { Return(result_promise); } -Node* PromiseBuiltinsAssembler::AllocatePromiseReaction(Node* next, - Node* payload, - Node* fulfill_handler, - Node* reject_handler) { +Node* PromiseBuiltinsAssembler::AllocatePromiseReaction( + Node* next, Node* promise_or_capability, Node* fulfill_handler, + Node* reject_handler) { Node* const reaction = Allocate(PromiseReaction::kSize); StoreMapNoWriteBarrier(reaction, Heap::kPromiseReactionMapRootIndex); StoreObjectFieldNoWriteBarrier(reaction, PromiseReaction::kNextOffset, next); - StoreObjectFieldNoWriteBarrier(reaction, PromiseReaction::kPayloadOffset, - payload); + StoreObjectFieldNoWriteBarrier(reaction, + PromiseReaction::kPromiseOrCapabilityOffset, + promise_or_capability); StoreObjectFieldNoWriteBarrier( reaction, PromiseReaction::kFulfillHandlerOffset, fulfill_handler); StoreObjectFieldNoWriteBarrier( @@ -408,7 +408,8 @@ Node* PromiseBuiltinsAssembler::AllocatePromiseReaction(Node* next, } Node* PromiseBuiltinsAssembler::AllocatePromiseReactionJobTask( - Node* map, Node* context, Node* argument, Node* handler, Node* payload) { + Node* map, Node* context, Node* argument, Node* handler, + Node* promise_or_capability) { Node* const microtask = Allocate(PromiseReactionJobTask::kSize); StoreMapNoWriteBarrier(microtask, map); StoreObjectFieldNoWriteBarrier( @@ -418,18 +419,19 @@ Node* PromiseBuiltinsAssembler::AllocatePromiseReactionJobTask( StoreObjectFieldNoWriteBarrier( microtask, PromiseReactionJobTask::kHandlerOffset, handler); StoreObjectFieldNoWriteBarrier( - microtask, PromiseReactionJobTask::kPayloadOffset, payload); + microtask, PromiseReactionJobTask::kPromiseOrCapabilityOffset, + promise_or_capability); return microtask; } Node* PromiseBuiltinsAssembler::AllocatePromiseReactionJobTask( Heap::RootListIndex map_root_index, Node* context, Node* argument, - Node* handler, Node* payload) { + Node* handler, Node* promise_or_capability) { DCHECK(map_root_index == Heap::kPromiseFulfillReactionJobTaskMapRootIndex || map_root_index == Heap::kPromiseRejectReactionJobTaskMapRootIndex); Node* const map = LoadRoot(map_root_index); return AllocatePromiseReactionJobTask(map, context, argument, handler, - payload); + promise_or_capability); } Node* PromiseBuiltinsAssembler::AllocatePromiseResolveThenableJobTask( @@ -502,8 +504,8 @@ Node* PromiseBuiltinsAssembler::TriggerPromiseReactions( context); STATIC_ASSERT(PromiseReaction::kFulfillHandlerOffset == PromiseReactionJobTask::kHandlerOffset); - STATIC_ASSERT(PromiseReaction::kPayloadOffset == - PromiseReactionJobTask::kPayloadOffset); + STATIC_ASSERT(PromiseReaction::kPromiseOrCapabilityOffset == + PromiseReactionJobTask::kPromiseOrCapabilityOffset); } else { Node* handler = LoadObjectField(current, PromiseReaction::kRejectHandlerOffset); @@ -515,8 +517,8 @@ Node* PromiseBuiltinsAssembler::TriggerPromiseReactions( context); StoreObjectField(current, PromiseReactionJobTask::kHandlerOffset, handler); - STATIC_ASSERT(PromiseReaction::kPayloadOffset == - PromiseReactionJobTask::kPayloadOffset); + STATIC_ASSERT(PromiseReaction::kPromiseOrCapabilityOffset == + PromiseReactionJobTask::kPromiseOrCapabilityOffset); } CallBuiltin(Builtins::kEnqueueMicrotask, NoContextConstant(), current); Goto(&loop); @@ -1118,28 +1120,20 @@ TF_BUILTIN(PromiseResolveThenableJob, PromiseBuiltinsAssembler) { // ES #sec-promisereactionjob void PromiseBuiltinsAssembler::PromiseReactionJob(Node* context, Node* argument, - Node* handler, Node* payload, + Node* handler, + Node* promise_or_capability, PromiseReaction::Type type) { CSA_ASSERT(this, TaggedIsNotSmi(handler)); - CSA_ASSERT(this, Word32Or(IsCallable(handler), - Word32Or(IsCode(handler), IsUndefined(handler)))); - CSA_ASSERT(this, TaggedIsNotSmi(payload)); + CSA_ASSERT(this, Word32Or(IsUndefined(handler), IsCallable(handler))); + CSA_ASSERT(this, TaggedIsNotSmi(promise_or_capability)); + CSA_ASSERT(this, Word32Or(IsJSPromise(promise_or_capability), + IsPromiseCapability(promise_or_capability))); VARIABLE(var_handler_result, MachineRepresentation::kTagged, argument); - Label if_handler_callable(this), if_fulfill(this), if_reject(this), - if_code_handler(this); - - GotoIf(IsUndefined(handler), - type == PromiseReaction::kFulfill ? &if_fulfill : &if_reject); - Branch(IsCode(handler), &if_code_handler, &if_handler_callable); - - BIND(&if_code_handler); - { - // The {handler} is a Code object that knows how to deal with - // the {payload} and the {argument}. - PromiseReactionHandlerDescriptor descriptor(isolate()); - TailCallStub(descriptor, handler, context, argument, payload); - } + Label if_handler_callable(this), if_fulfill(this), if_reject(this); + Branch(IsUndefined(handler), + type == PromiseReaction::kFulfill ? &if_fulfill : &if_reject, + &if_handler_callable); BIND(&if_handler_callable); { @@ -1155,22 +1149,24 @@ void PromiseBuiltinsAssembler::PromiseReactionJob(Node* context, Node* argument, { Label if_promise(this), if_promise_capability(this, Label::kDeferred); Node* const value = var_handler_result.value(); - Branch(IsPromiseCapability(payload), &if_promise_capability, &if_promise); + Branch(IsPromiseCapability(promise_or_capability), &if_promise_capability, + &if_promise); BIND(&if_promise); { // For fast native promises we can skip the indirection // via the promiseCapability.[[Resolve]] function and // run the resolve logic directly from here. - TailCallBuiltin(Builtins::kResolvePromise, context, payload, value); + TailCallBuiltin(Builtins::kResolvePromise, context, promise_or_capability, + value); } BIND(&if_promise_capability); { // In the general case we need to call the (user provided) // promiseCapability.[[Resolve]] function. - Node* const resolve = - LoadObjectField(payload, PromiseCapability::kResolveOffset); + Node* const resolve = LoadObjectField(promise_or_capability, + PromiseCapability::kResolveOffset); Node* const result = CallJS( CodeFactory::Call(isolate(), ConvertReceiverMode::kNullOrUndefined), context, resolve, UndefinedConstant(), value); @@ -1183,15 +1179,16 @@ void PromiseBuiltinsAssembler::PromiseReactionJob(Node* context, Node* argument, if (type == PromiseReaction::kReject) { Label if_promise(this), if_promise_capability(this, Label::kDeferred); Node* const reason = var_handler_result.value(); - Branch(IsPromiseCapability(payload), &if_promise_capability, &if_promise); + Branch(IsPromiseCapability(promise_or_capability), &if_promise_capability, + &if_promise); BIND(&if_promise); { // For fast native promises we can skip the indirection // via the promiseCapability.[[Reject]] function and // run the resolve logic directly from here. - TailCallBuiltin(Builtins::kRejectPromise, context, payload, reason, - FalseConstant()); + TailCallBuiltin(Builtins::kRejectPromise, context, promise_or_capability, + reason, FalseConstant()); } BIND(&if_promise_capability); @@ -1201,8 +1198,8 @@ void PromiseBuiltinsAssembler::PromiseReactionJob(Node* context, Node* argument, Label if_exception(this, Label::kDeferred); VARIABLE(var_exception, MachineRepresentation::kTagged, TheHoleConstant()); - Node* const reject = - LoadObjectField(payload, PromiseCapability::kRejectOffset); + Node* const reject = LoadObjectField(promise_or_capability, + PromiseCapability::kRejectOffset); Node* const result = CallJS( CodeFactory::Call(isolate(), ConvertReceiverMode::kNullOrUndefined), context, reject, UndefinedConstant(), reason); @@ -1219,7 +1216,8 @@ void PromiseBuiltinsAssembler::PromiseReactionJob(Node* context, Node* argument, // predictions in the debugger will be wrong, which just walks the stack // and checks for certain builtins. TailCallBuiltin(Builtins::kPromiseRejectReactionJob, context, - var_handler_result.value(), UndefinedConstant(), payload); + var_handler_result.value(), UndefinedConstant(), + promise_or_capability); } } @@ -1228,9 +1226,10 @@ TF_BUILTIN(PromiseFulfillReactionJob, PromiseBuiltinsAssembler) { Node* const context = Parameter(Descriptor::kContext); Node* const value = Parameter(Descriptor::kValue); Node* const handler = Parameter(Descriptor::kHandler); - Node* const payload = Parameter(Descriptor::kPayload); + Node* const promise_or_capability = + Parameter(Descriptor::kPromiseOrCapability); - PromiseReactionJob(context, value, handler, payload, + PromiseReactionJob(context, value, handler, promise_or_capability, PromiseReaction::kFulfill); } @@ -1239,9 +1238,10 @@ TF_BUILTIN(PromiseRejectReactionJob, PromiseBuiltinsAssembler) { Node* const context = Parameter(Descriptor::kContext); Node* const reason = Parameter(Descriptor::kReason); Node* const handler = Parameter(Descriptor::kHandler); - Node* const payload = Parameter(Descriptor::kPayload); + Node* const promise_or_capability = + Parameter(Descriptor::kPromiseOrCapability); - PromiseReactionJob(context, reason, handler, payload, + PromiseReactionJob(context, reason, handler, promise_or_capability, PromiseReaction::kReject); } @@ -1717,23 +1717,21 @@ TF_BUILTIN(ResolvePromise, PromiseBuiltinsAssembler) { // 7. If Type(resolution) is not Object, then GotoIf(TaggedIsSmi(resolution), &if_fulfill); - Node* const resolution_map = LoadMap(resolution); - GotoIfNot(IsJSReceiverMap(resolution_map), &if_fulfill); + Node* const result_map = LoadMap(resolution); + GotoIfNot(IsJSReceiverMap(result_map), &if_fulfill); // We can skip the "then" lookup on {resolution} if its [[Prototype]] // is the (initial) Promise.prototype and the Promise#then protector // is intact, as that guards the lookup path for the "then" property // on JSPromise instances which have the (initial) %PromisePrototype%. - Label if_fast(this), if_generic(this), if_slow(this, Label::kDeferred); + Label if_fast(this), if_slow(this, Label::kDeferred); Node* const native_context = LoadNativeContext(context); - GotoIfForceSlowPath(&if_slow); - GotoIf(IsPromiseThenProtectorCellInvalid(), &if_slow); - GotoIfNot(IsJSPromiseMap(resolution_map), &if_generic); - Node* const promise_prototype = - LoadContextElement(native_context, Context::PROMISE_PROTOTYPE_INDEX); - Branch(WordEqual(LoadMapPrototype(resolution_map), promise_prototype), - &if_fast, &if_slow); + BranchIfPromiseThenLookupChainIntact(native_context, result_map, &if_fast, + &if_slow); + // Resolution is a native promise and if it's already resolved or + // rejected, shortcircuit the resolution procedure by directly + // reusing the value from the promise. BIND(&if_fast); { Node* const then = @@ -1742,21 +1740,6 @@ TF_BUILTIN(ResolvePromise, PromiseBuiltinsAssembler) { Goto(&do_enqueue); } - BIND(&if_generic); - { - // We can skip the lookup of "then" if the {resolution} is a (newly - // created) IterResultObject, as the Promise#then protector also - // ensures that the intrinsic %ObjectPrototype% doesn't contain any - // "then" property. This helps to avoid negative lookups on iterator - // results from async generators. - CSA_ASSERT(this, IsJSReceiverMap(resolution_map)); - CSA_ASSERT(this, Word32BinaryNot(IsPromiseThenProtectorCellInvalid())); - Node* const iterator_result_map = - LoadContextElement(native_context, Context::ITERATOR_RESULT_MAP_INDEX); - Branch(WordEqual(resolution_map, iterator_result_map), &if_fulfill, - &if_slow); - } - BIND(&if_slow); { // 8. Let then be Get(resolution, "then"). diff --git a/deps/v8/src/builtins/builtins-promise-gen.h b/deps/v8/src/builtins/builtins-promise-gen.h index f21d86a141a28d..694cea28c06b5a 100644 --- a/deps/v8/src/builtins/builtins-promise-gen.h +++ b/deps/v8/src/builtins/builtins-promise-gen.h @@ -85,14 +85,16 @@ class PromiseBuiltinsAssembler : public CodeStubAssembler { Node* AllocateAndSetJSPromise(Node* context, v8::Promise::PromiseState status, Node* result); - Node* AllocatePromiseReaction(Node* next, Node* payload, + Node* AllocatePromiseReaction(Node* next, Node* promise_or_capability, Node* fulfill_handler, Node* reject_handler); Node* AllocatePromiseReactionJobTask(Heap::RootListIndex map_root_index, Node* context, Node* argument, - Node* handler, Node* payload); + Node* handler, + Node* promise_or_capability); Node* AllocatePromiseReactionJobTask(Node* map, Node* context, Node* argument, - Node* handler, Node* payload); + Node* handler, + Node* promise_or_capability); Node* AllocatePromiseResolveThenableJobTask(Node* promise_to_resolve, Node* then, Node* thenable, Node* context); @@ -192,7 +194,8 @@ class PromiseBuiltinsAssembler : public CodeStubAssembler { Node* PromiseStatus(Node* promise); void PromiseReactionJob(Node* context, Node* argument, Node* handler, - Node* payload, PromiseReaction::Type type); + Node* promise_or_capability, + PromiseReaction::Type type); Node* IsPromiseStatus(Node* actual, v8::Promise::PromiseState expected); void PromiseSetStatus(Node* promise, v8::Promise::PromiseState status); diff --git a/deps/v8/src/builtins/builtins.cc b/deps/v8/src/builtins/builtins.cc index c348248fffb0d9..7e6a0459a7da90 100644 --- a/deps/v8/src/builtins/builtins.cc +++ b/deps/v8/src/builtins/builtins.cc @@ -364,17 +364,12 @@ bool Builtins::IsIsolateIndependent(int index) { case kAsyncFromSyncIteratorPrototypeNext: case kAsyncFromSyncIteratorPrototypeReturn: case kAsyncFromSyncIteratorPrototypeThrow: - case kAsyncFunctionAwaitFulfill: - case kAsyncFunctionAwaitReject: + case kAsyncFunctionAwaitCaught: case kAsyncFunctionPromiseCreate: case kAsyncFunctionPromiseRelease: - case kAsyncGeneratorAwaitFulfill: - case kAsyncGeneratorAwaitReject: case kAsyncGeneratorResumeNext: - case kAsyncGeneratorReturnClosedFulfill: - case kAsyncGeneratorReturnClosedReject: - case kAsyncGeneratorReturnFulfill: - case kAsyncGeneratorYieldFulfill: + case kAsyncGeneratorReturnClosedRejectClosure: + case kAsyncGeneratorReturn: case kAsyncIteratorValueUnwrap: case kBitwiseNot: case kBooleanPrototypeToString: diff --git a/deps/v8/src/compiler/js-intrinsic-lowering.cc b/deps/v8/src/compiler/js-intrinsic-lowering.cc index c570a1f8ddce3f..d9742e47d9fd2f 100644 --- a/deps/v8/src/compiler/js-intrinsic-lowering.cc +++ b/deps/v8/src/compiler/js-intrinsic-lowering.cc @@ -41,14 +41,6 @@ Reduction JSIntrinsicLowering::Reduce(Node* node) { return ReduceCreateJSGeneratorObject(node); case Runtime::kInlineGeneratorGetInputOrDebugPos: return ReduceGeneratorGetInputOrDebugPos(node); - case Runtime::kInlineAsyncFunctionAwaitCaught: - return ReduceAsyncFunctionAwaitCaught(node); - case Runtime::kInlineAsyncFunctionAwaitUncaught: - return ReduceAsyncFunctionAwaitUncaught(node); - case Runtime::kInlineAsyncGeneratorAwaitCaught: - return ReduceAsyncGeneratorAwaitCaught(node); - case Runtime::kInlineAsyncGeneratorAwaitUncaught: - return ReduceAsyncGeneratorAwaitUncaught(node); case Runtime::kInlineAsyncGeneratorReject: return ReduceAsyncGeneratorReject(node); case Runtime::kInlineAsyncGeneratorResolve: @@ -185,33 +177,6 @@ Reduction JSIntrinsicLowering::ReduceGeneratorGetInputOrDebugPos(Node* node) { return Change(node, op, generator, effect, control); } -Reduction JSIntrinsicLowering::ReduceAsyncFunctionAwaitCaught(Node* node) { - return Change( - node, - Builtins::CallableFor(isolate(), Builtins::kAsyncFunctionAwaitCaught), 0); -} - -Reduction JSIntrinsicLowering::ReduceAsyncFunctionAwaitUncaught(Node* node) { - return Change( - node, - Builtins::CallableFor(isolate(), Builtins::kAsyncFunctionAwaitUncaught), - 0); -} - -Reduction JSIntrinsicLowering::ReduceAsyncGeneratorAwaitCaught(Node* node) { - return Change( - node, - Builtins::CallableFor(isolate(), Builtins::kAsyncGeneratorAwaitCaught), - 0); -} - -Reduction JSIntrinsicLowering::ReduceAsyncGeneratorAwaitUncaught(Node* node) { - return Change( - node, - Builtins::CallableFor(isolate(), Builtins::kAsyncGeneratorAwaitUncaught), - 0); -} - Reduction JSIntrinsicLowering::ReduceAsyncGeneratorReject(Node* node) { return Change( node, Builtins::CallableFor(isolate(), Builtins::kAsyncGeneratorReject), diff --git a/deps/v8/src/compiler/js-intrinsic-lowering.h b/deps/v8/src/compiler/js-intrinsic-lowering.h index fb745986a60155..18fe1248c7aa52 100644 --- a/deps/v8/src/compiler/js-intrinsic-lowering.h +++ b/deps/v8/src/compiler/js-intrinsic-lowering.h @@ -45,10 +45,6 @@ class V8_EXPORT_PRIVATE JSIntrinsicLowering final Reduction ReduceCreateJSGeneratorObject(Node* node); Reduction ReduceGeneratorClose(Node* node); Reduction ReduceGeneratorGetInputOrDebugPos(Node* node); - Reduction ReduceAsyncFunctionAwaitCaught(Node* node); - Reduction ReduceAsyncFunctionAwaitUncaught(Node* node); - Reduction ReduceAsyncGeneratorAwaitCaught(Node* node); - Reduction ReduceAsyncGeneratorAwaitUncaught(Node* node); Reduction ReduceAsyncGeneratorReject(Node* node); Reduction ReduceAsyncGeneratorResolve(Node* node); Reduction ReduceAsyncGeneratorYield(Node* node); diff --git a/deps/v8/src/contexts.h b/deps/v8/src/contexts.h index 6fc6f2d1c32ca5..fcfeccdc44e08f 100644 --- a/deps/v8/src/contexts.h +++ b/deps/v8/src/contexts.h @@ -32,37 +32,44 @@ enum ContextLookupFlags { // must always be allocated via Heap::AllocateContext() or // Factory::NewContext. -#define NATIVE_CONTEXT_INTRINSIC_FUNCTIONS(V) \ - V(ASYNC_FUNCTION_PROMISE_CREATE_INDEX, JSFunction, \ - async_function_promise_create) \ - V(ASYNC_FUNCTION_PROMISE_RELEASE_INDEX, JSFunction, \ - async_function_promise_release) \ - V(IS_ARRAYLIKE, JSFunction, is_arraylike) \ - V(GENERATOR_NEXT_INTERNAL, JSFunction, generator_next_internal) \ - V(MAKE_ERROR_INDEX, JSFunction, make_error) \ - V(MAKE_RANGE_ERROR_INDEX, JSFunction, make_range_error) \ - V(MAKE_SYNTAX_ERROR_INDEX, JSFunction, make_syntax_error) \ - V(MAKE_TYPE_ERROR_INDEX, JSFunction, make_type_error) \ - V(MAKE_URI_ERROR_INDEX, JSFunction, make_uri_error) \ - V(OBJECT_CREATE, JSFunction, object_create) \ - V(OBJECT_DEFINE_PROPERTIES, JSFunction, object_define_properties) \ - V(OBJECT_DEFINE_PROPERTY, JSFunction, object_define_property) \ - V(OBJECT_GET_PROTOTYPE_OF, JSFunction, object_get_prototype_of) \ - V(OBJECT_IS_EXTENSIBLE, JSFunction, object_is_extensible) \ - V(OBJECT_IS_FROZEN, JSFunction, object_is_frozen) \ - V(OBJECT_IS_SEALED, JSFunction, object_is_sealed) \ - V(OBJECT_KEYS, JSFunction, object_keys) \ - V(REGEXP_INTERNAL_MATCH, JSFunction, regexp_internal_match) \ - V(REFLECT_APPLY_INDEX, JSFunction, reflect_apply) \ - V(REFLECT_CONSTRUCT_INDEX, JSFunction, reflect_construct) \ - V(REFLECT_DEFINE_PROPERTY_INDEX, JSFunction, reflect_define_property) \ - V(REFLECT_DELETE_PROPERTY_INDEX, JSFunction, reflect_delete_property) \ - V(MATH_FLOOR_INDEX, JSFunction, math_floor) \ - V(MATH_POW_INDEX, JSFunction, math_pow) \ - V(PROMISE_INTERNAL_CONSTRUCTOR_INDEX, JSFunction, \ - promise_internal_constructor) \ - V(IS_PROMISE_INDEX, JSFunction, is_promise) \ - V(PROMISE_THEN_INDEX, JSFunction, promise_then) +#define NATIVE_CONTEXT_INTRINSIC_FUNCTIONS(V) \ + V(ASYNC_FUNCTION_AWAIT_CAUGHT_INDEX, JSFunction, \ + async_function_await_caught) \ + V(ASYNC_FUNCTION_AWAIT_UNCAUGHT_INDEX, JSFunction, \ + async_function_await_uncaught) \ + V(ASYNC_FUNCTION_PROMISE_CREATE_INDEX, JSFunction, \ + async_function_promise_create) \ + V(ASYNC_FUNCTION_PROMISE_RELEASE_INDEX, JSFunction, \ + async_function_promise_release) \ + V(IS_ARRAYLIKE, JSFunction, is_arraylike) \ + V(GENERATOR_NEXT_INTERNAL, JSFunction, generator_next_internal) \ + V(MAKE_ERROR_INDEX, JSFunction, make_error) \ + V(MAKE_RANGE_ERROR_INDEX, JSFunction, make_range_error) \ + V(MAKE_SYNTAX_ERROR_INDEX, JSFunction, make_syntax_error) \ + V(MAKE_TYPE_ERROR_INDEX, JSFunction, make_type_error) \ + V(MAKE_URI_ERROR_INDEX, JSFunction, make_uri_error) \ + V(OBJECT_CREATE, JSFunction, object_create) \ + V(OBJECT_DEFINE_PROPERTIES, JSFunction, object_define_properties) \ + V(OBJECT_DEFINE_PROPERTY, JSFunction, object_define_property) \ + V(OBJECT_GET_PROTOTYPE_OF, JSFunction, object_get_prototype_of) \ + V(OBJECT_IS_EXTENSIBLE, JSFunction, object_is_extensible) \ + V(OBJECT_IS_FROZEN, JSFunction, object_is_frozen) \ + V(OBJECT_IS_SEALED, JSFunction, object_is_sealed) \ + V(OBJECT_KEYS, JSFunction, object_keys) \ + V(REGEXP_INTERNAL_MATCH, JSFunction, regexp_internal_match) \ + V(REFLECT_APPLY_INDEX, JSFunction, reflect_apply) \ + V(REFLECT_CONSTRUCT_INDEX, JSFunction, reflect_construct) \ + V(REFLECT_DEFINE_PROPERTY_INDEX, JSFunction, reflect_define_property) \ + V(REFLECT_DELETE_PROPERTY_INDEX, JSFunction, reflect_delete_property) \ + V(MATH_FLOOR_INDEX, JSFunction, math_floor) \ + V(MATH_POW_INDEX, JSFunction, math_pow) \ + V(NEW_PROMISE_CAPABILITY_INDEX, JSFunction, new_promise_capability) \ + V(PROMISE_INTERNAL_CONSTRUCTOR_INDEX, JSFunction, \ + promise_internal_constructor) \ + V(IS_PROMISE_INDEX, JSFunction, is_promise) \ + V(PROMISE_THEN_INDEX, JSFunction, promise_then) \ + V(ASYNC_GENERATOR_AWAIT_CAUGHT, JSFunction, async_generator_await_caught) \ + V(ASYNC_GENERATOR_AWAIT_UNCAUGHT, JSFunction, async_generator_await_uncaught) #define NATIVE_CONTEXT_IMPORTED_FIELDS(V) \ V(ARRAY_POP_INDEX, JSFunction, array_pop) \ @@ -116,11 +123,27 @@ enum ContextLookupFlags { V(ARRAY_BUFFER_NOINIT_FUN_INDEX, JSFunction, array_buffer_noinit_fun) \ V(ARRAY_FUNCTION_INDEX, JSFunction, array_function) \ V(ASYNC_FROM_SYNC_ITERATOR_MAP_INDEX, Map, async_from_sync_iterator_map) \ + V(ASYNC_FUNCTION_AWAIT_REJECT_SHARED_FUN, SharedFunctionInfo, \ + async_function_await_reject_shared_fun) \ + V(ASYNC_FUNCTION_AWAIT_RESOLVE_SHARED_FUN, SharedFunctionInfo, \ + async_function_await_resolve_shared_fun) \ V(ASYNC_FUNCTION_FUNCTION_INDEX, JSFunction, async_function_constructor) \ V(ASYNC_GENERATOR_FUNCTION_FUNCTION_INDEX, JSFunction, \ async_generator_function_function) \ V(ASYNC_ITERATOR_VALUE_UNWRAP_SHARED_FUN, SharedFunctionInfo, \ async_iterator_value_unwrap_shared_fun) \ + V(ASYNC_GENERATOR_AWAIT_REJECT_SHARED_FUN, SharedFunctionInfo, \ + async_generator_await_reject_shared_fun) \ + V(ASYNC_GENERATOR_AWAIT_RESOLVE_SHARED_FUN, SharedFunctionInfo, \ + async_generator_await_resolve_shared_fun) \ + V(ASYNC_GENERATOR_YIELD_RESOLVE_SHARED_FUN, SharedFunctionInfo, \ + async_generator_yield_resolve_shared_fun) \ + V(ASYNC_GENERATOR_RETURN_RESOLVE_SHARED_FUN, SharedFunctionInfo, \ + async_generator_return_resolve_shared_fun) \ + V(ASYNC_GENERATOR_RETURN_CLOSED_RESOLVE_SHARED_FUN, SharedFunctionInfo, \ + async_generator_return_closed_resolve_shared_fun) \ + V(ASYNC_GENERATOR_RETURN_CLOSED_REJECT_SHARED_FUN, SharedFunctionInfo, \ + async_generator_return_closed_reject_shared_fun) \ V(ATOMICS_OBJECT, JSObject, atomics_object) \ V(BIGINT_FUNCTION_INDEX, JSFunction, bigint_function) \ V(BIGINT64_ARRAY_FUN_INDEX, JSFunction, bigint64_array_fun) \ diff --git a/deps/v8/src/heap-symbols.h b/deps/v8/src/heap-symbols.h index 82ecd7665750ff..c15aa9ba1380db 100644 --- a/deps/v8/src/heap-symbols.h +++ b/deps/v8/src/heap-symbols.h @@ -237,7 +237,6 @@ V(error_script_symbol) \ V(error_start_pos_symbol) \ V(frozen_symbol) \ - V(generator_outer_promise_symbol) \ V(generic_symbol) \ V(home_object_symbol) \ V(intl_initialized_marker_symbol) \ diff --git a/deps/v8/src/interface-descriptors.h b/deps/v8/src/interface-descriptors.h index 61da0c3f4ea45a..8375ea11971ac4 100644 --- a/deps/v8/src/interface-descriptors.h +++ b/deps/v8/src/interface-descriptors.h @@ -81,7 +81,6 @@ class PlatformInterfaceDescriptor; V(FrameDropperTrampoline) \ V(WasmRuntimeCall) \ V(RunMicrotasks) \ - V(PromiseReactionHandler) \ BUILTIN_LIST_TFS(V) class V8_EXPORT_PRIVATE CallInterfaceDescriptorData { @@ -889,13 +888,6 @@ class RunMicrotasksDescriptor final : public CallInterfaceDescriptor { 0) }; -class PromiseReactionHandlerDescriptor final : public CallInterfaceDescriptor { - public: - DEFINE_PARAMETERS(kArgument, kGenerator) - DECLARE_DEFAULT_DESCRIPTOR(PromiseReactionHandlerDescriptor, - CallInterfaceDescriptor, 2) -}; - #define DEFINE_TFS_BUILTIN_DESCRIPTOR(Name, ...) \ class Name##Descriptor : public CallInterfaceDescriptor { \ public: \ diff --git a/deps/v8/src/interpreter/bytecode-generator.cc b/deps/v8/src/interpreter/bytecode-generator.cc index 29ad2c2a82f033..744c6614f7a2ec 100644 --- a/deps/v8/src/interpreter/bytecode-generator.cc +++ b/deps/v8/src/interpreter/bytecode-generator.cc @@ -3239,20 +3239,22 @@ void BytecodeGenerator::BuildAwait(Expression* await_expr) { // Await(operand) and suspend. RegisterAllocationScope register_scope(this); - Runtime::FunctionId id; + int await_builtin_context_index; RegisterList args; if (IsAsyncGeneratorFunction(function_kind())) { - id = catch_prediction() == HandlerTable::ASYNC_AWAIT - ? Runtime::kInlineAsyncGeneratorAwaitUncaught - : Runtime::kInlineAsyncGeneratorAwaitCaught; + await_builtin_context_index = + catch_prediction() == HandlerTable::ASYNC_AWAIT + ? Context::ASYNC_GENERATOR_AWAIT_UNCAUGHT + : Context::ASYNC_GENERATOR_AWAIT_CAUGHT; args = register_allocator()->NewRegisterList(2); builder() ->MoveRegister(generator_object(), args[0]) .StoreAccumulatorInRegister(args[1]); } else { - id = catch_prediction() == HandlerTable::ASYNC_AWAIT - ? Runtime::kInlineAsyncFunctionAwaitUncaught - : Runtime::kInlineAsyncFunctionAwaitCaught; + await_builtin_context_index = + catch_prediction() == HandlerTable::ASYNC_AWAIT + ? Context::ASYNC_FUNCTION_AWAIT_UNCAUGHT_INDEX + : Context::ASYNC_FUNCTION_AWAIT_CAUGHT_INDEX; args = register_allocator()->NewRegisterList(3); builder() ->MoveRegister(generator_object(), args[0]) @@ -3265,7 +3267,7 @@ void BytecodeGenerator::BuildAwait(Expression* await_expr) { builder()->StoreAccumulatorInRegister(args[2]); } - builder()->CallRuntime(id, args); + builder()->CallJSRuntime(await_builtin_context_index, args); } BuildSuspendPoint(await_expr); diff --git a/deps/v8/src/interpreter/interpreter-intrinsics-generator.cc b/deps/v8/src/interpreter/interpreter-intrinsics-generator.cc index 675a8bcccc7c0a..0480dec6cc6516 100644 --- a/deps/v8/src/interpreter/interpreter-intrinsics-generator.cc +++ b/deps/v8/src/interpreter/interpreter-intrinsics-generator.cc @@ -402,30 +402,6 @@ Node* IntrinsicsGenerator::GetImportMetaObject( return return_value.value(); } -Node* IntrinsicsGenerator::AsyncFunctionAwaitCaught( - const InterpreterAssembler::RegListNodePair& args, Node* context) { - return IntrinsicAsBuiltinCall(args, context, - Builtins::kAsyncFunctionAwaitCaught); -} - -Node* IntrinsicsGenerator::AsyncFunctionAwaitUncaught( - const InterpreterAssembler::RegListNodePair& args, Node* context) { - return IntrinsicAsBuiltinCall(args, context, - Builtins::kAsyncFunctionAwaitUncaught); -} - -Node* IntrinsicsGenerator::AsyncGeneratorAwaitCaught( - const InterpreterAssembler::RegListNodePair& args, Node* context) { - return IntrinsicAsBuiltinCall(args, context, - Builtins::kAsyncGeneratorAwaitCaught); -} - -Node* IntrinsicsGenerator::AsyncGeneratorAwaitUncaught( - const InterpreterAssembler::RegListNodePair& args, Node* context) { - return IntrinsicAsBuiltinCall(args, context, - Builtins::kAsyncGeneratorAwaitUncaught); -} - Node* IntrinsicsGenerator::AsyncGeneratorReject( const InterpreterAssembler::RegListNodePair& args, Node* context) { return IntrinsicAsBuiltinCall(args, context, Builtins::kAsyncGeneratorReject); diff --git a/deps/v8/src/interpreter/interpreter-intrinsics.h b/deps/v8/src/interpreter/interpreter-intrinsics.h index 6cdfec2d04f1fb..3016183c0b96d7 100644 --- a/deps/v8/src/interpreter/interpreter-intrinsics.h +++ b/deps/v8/src/interpreter/interpreter-intrinsics.h @@ -14,10 +14,6 @@ namespace interpreter { // List of supported intrisics, with upper case name, lower case name and // expected number of arguments (-1 denoting argument count is variable). #define INTRINSICS_LIST(V) \ - V(AsyncFunctionAwaitCaught, async_function_await_caught, 3) \ - V(AsyncFunctionAwaitUncaught, async_function_await_uncaught, 3) \ - V(AsyncGeneratorAwaitCaught, async_generator_await_caught, 2) \ - V(AsyncGeneratorAwaitUncaught, async_generator_await_uncaught, 2) \ V(AsyncGeneratorReject, async_generator_reject, 2) \ V(AsyncGeneratorResolve, async_generator_resolve, 3) \ V(AsyncGeneratorYield, async_generator_yield, 3) \ diff --git a/deps/v8/src/isolate.cc b/deps/v8/src/isolate.cc index adb30b12acece3..2c4e22726d7301 100644 --- a/deps/v8/src/isolate.cc +++ b/deps/v8/src/isolate.cc @@ -2048,7 +2048,6 @@ void Isolate::PopPromise() { } namespace { - bool InternalPromiseHasUserDefinedRejectHandler(Isolate* isolate, Handle promise); @@ -2095,27 +2094,29 @@ bool InternalPromiseHasUserDefinedRejectHandler(Isolate* isolate, } if (promise->status() == Promise::kPending) { - Handle current(promise->reactions(), isolate); - while (!current->IsSmi()) { - Handle current_reaction = - Handle::cast(current); - Handle payload(current_reaction->payload(), isolate); - Handle current_promise; - if (JSPromise::From(payload).ToHandle(¤t_promise)) { - if (current_reaction->reject_handler()->IsCallable()) { - Handle current_handler( - JSReceiver::cast(current_reaction->reject_handler()), isolate); - if (PromiseHandlerCheck(isolate, current_handler, current_promise)) { - return true; - } - } else { - if (InternalPromiseHasUserDefinedRejectHandler(isolate, - current_promise)) { - return true; - } + for (Handle current(promise->reactions(), isolate); + !current->IsSmi();) { + Handle reaction = Handle::cast(current); + Handle promise_or_capability( + reaction->promise_or_capability(), isolate); + Handle promise = Handle::cast( + promise_or_capability->IsJSPromise() + ? promise_or_capability + : handle(Handle::cast(promise_or_capability) + ->promise(), + isolate)); + if (reaction->reject_handler()->IsUndefined(isolate)) { + if (InternalPromiseHasUserDefinedRejectHandler(isolate, promise)) { + return true; + } + } else { + Handle current_handler( + JSReceiver::cast(reaction->reject_handler()), isolate); + if (PromiseHandlerCheck(isolate, current_handler, promise)) { + return true; } } - current = handle(current_reaction->next(), isolate); + current = handle(reaction->next(), isolate); } } diff --git a/deps/v8/src/isolate.h b/deps/v8/src/isolate.h index 75b447f1629bb5..82d33033737c36 100644 --- a/deps/v8/src/isolate.h +++ b/deps/v8/src/isolate.h @@ -1096,10 +1096,7 @@ class Isolate { bool IsPromiseResolveLookupChainIntact(); // Make sure a lookup of "then" on any JSPromise whose [[Prototype]] is the - // initial %PromisePrototype% yields the initial method. In addition this - // protector also guards the negative lookup of "then" on the intrinsic - // %ObjectPrototype%, meaning that such lookups are guaranteed to yield - // undefined without triggering any side-effects. + // initial %PromisePrototype% yields the initial method. bool IsPromiseThenLookupChainIntact(); bool IsPromiseThenLookupChainIntact(Handle receiver); diff --git a/deps/v8/src/lookup.cc b/deps/v8/src/lookup.cc index 205011499470ca..a4cca33d6c3e8a 100644 --- a/deps/v8/src/lookup.cc +++ b/deps/v8/src/lookup.cc @@ -364,14 +364,7 @@ void LookupIterator::InternalUpdateProtector() { if (!isolate_->IsPromiseThenLookupChainIntact()) return; // Setting the "then" property on any JSPromise instance or on the // initial %PromisePrototype% invalidates the Promise#then protector. - // Also setting the "then" property on the initial %ObjectPrototype% - // invalidates the Promise#then protector, since we use this protector - // to guard the fast-path in AsyncGeneratorResolve, where we can skip - // the ResolvePromise step and go directly to FulfillPromise if we - // know that the Object.prototype doesn't contain a "then" method. if (holder_->IsJSPromise() || - isolate_->IsInAnyContext(*holder_, - Context::INITIAL_OBJECT_PROTOTYPE_INDEX) || isolate_->IsInAnyContext(*holder_, Context::PROMISE_PROTOTYPE_INDEX)) { isolate_->InvalidatePromiseThenProtector(); } diff --git a/deps/v8/src/objects-debug.cc b/deps/v8/src/objects-debug.cc index c735cc0813caaa..086078bb251dc4 100644 --- a/deps/v8/src/objects-debug.cc +++ b/deps/v8/src/objects-debug.cc @@ -1172,13 +1172,10 @@ void PromiseReactionJobTask::PromiseReactionJobTaskVerify() { VerifyHeapPointer(context()); CHECK(context()->IsContext()); VerifyHeapPointer(handler()); - VerifyHeapPointer(payload()); - if (handler()->IsCode()) { - CHECK(payload()->IsJSReceiver()); - } else { - CHECK(handler()->IsUndefined(isolate) || handler()->IsCallable()); - CHECK(payload()->IsJSPromise() || payload()->IsPromiseCapability()); - } + CHECK(handler()->IsUndefined(isolate) || handler()->IsCallable()); + VerifyHeapPointer(promise_or_capability()); + CHECK(promise_or_capability()->IsJSPromise() || + promise_or_capability()->IsPromiseCapability()); } void PromiseFulfillReactionJobTask::PromiseFulfillReactionJobTaskVerify() { @@ -1220,18 +1217,14 @@ void PromiseReaction::PromiseReactionVerify() { VerifyPointer(next()); CHECK(next()->IsSmi() || next()->IsPromiseReaction()); VerifyHeapPointer(reject_handler()); + CHECK(reject_handler()->IsUndefined(isolate) || + reject_handler()->IsCallable()); VerifyHeapPointer(fulfill_handler()); - VerifyHeapPointer(payload()); - if (reject_handler()->IsCode()) { - CHECK(fulfill_handler()->IsCode()); - CHECK(payload()->IsJSReceiver()); - } else { - CHECK(reject_handler()->IsUndefined(isolate) || - reject_handler()->IsCallable()); - CHECK(fulfill_handler()->IsUndefined(isolate) || - fulfill_handler()->IsCallable()); - CHECK(payload()->IsJSPromise() || payload()->IsPromiseCapability()); - } + CHECK(fulfill_handler()->IsUndefined(isolate) || + fulfill_handler()->IsCallable()); + VerifyHeapPointer(promise_or_capability()); + CHECK(promise_or_capability()->IsJSPromise() || + promise_or_capability()->IsPromiseCapability()); } void JSPromise::JSPromiseVerify() { diff --git a/deps/v8/src/objects-inl.h b/deps/v8/src/objects-inl.h index bda031e0637776..297e9fc836d490 100644 --- a/deps/v8/src/objects-inl.h +++ b/deps/v8/src/objects-inl.h @@ -2278,7 +2278,7 @@ ACCESSORS(JSGlobalProxy, native_context, Object, kNativeContextOffset) ACCESSORS(AccessorInfo, name, Name, kNameOffset) SMI_ACCESSORS(AccessorInfo, flags, kFlagsOffset) ACCESSORS(AccessorInfo, expected_receiver_type, Object, - kExpectedReceiverTypeOffset) + kExpectedReceiverTypeOffset) ACCESSORS_CHECKED2(AccessorInfo, getter, Object, kGetterOffset, true, Foreign::IsNormalized(value)) diff --git a/deps/v8/src/objects-printer.cc b/deps/v8/src/objects-printer.cc index 942b9de0ba2779..8d20279b2f1f20 100644 --- a/deps/v8/src/objects-printer.cc +++ b/deps/v8/src/objects-printer.cc @@ -1441,7 +1441,7 @@ void PromiseFulfillReactionJobTask::PromiseFulfillReactionJobTaskPrint( os << "\n - argument: " << Brief(argument()); os << "\n - context: " << Brief(context()); os << "\n - handler: " << Brief(handler()); - os << "\n - payload: " << Brief(payload()); + os << "\n - promise_or_capability: " << Brief(promise_or_capability()); os << "\n"; } @@ -1451,7 +1451,7 @@ void PromiseRejectReactionJobTask::PromiseRejectReactionJobTaskPrint( os << "\n - argument: " << Brief(argument()); os << "\n - context: " << Brief(context()); os << "\n - handler: " << Brief(handler()); - os << "\n - payload: " << Brief(payload()); + os << "\n - promise_or_capability: " << Brief(promise_or_capability()); os << "\n"; } @@ -1478,7 +1478,7 @@ void PromiseReaction::PromiseReactionPrint(std::ostream& os) { // NOLINT os << "\n - next: " << Brief(next()); os << "\n - reject_handler: " << Brief(reject_handler()); os << "\n - fulfill_handler: " << Brief(fulfill_handler()); - os << "\n - payload: " << Brief(payload()); + os << "\n - promise_or_capability: " << Brief(promise_or_capability()); os << "\n"; } diff --git a/deps/v8/src/objects.cc b/deps/v8/src/objects.cc index 8057cb837b186d..6565910fd3faea 100644 --- a/deps/v8/src/objects.cc +++ b/deps/v8/src/objects.cc @@ -16054,27 +16054,6 @@ MaybeHandle JSPromise::Resolve(Handle promise, return isolate->factory()->undefined_value(); } -// static -MaybeHandle JSPromise::From(Handle object) { - Isolate* const isolate = object->GetIsolate(); - if (object->IsJSPromise()) { - return Handle::cast(object); - } else if (object->IsPromiseCapability()) { - Handle capability = - Handle::cast(object); - if (capability->promise()->IsJSPromise()) { - return handle(JSPromise::cast(capability->promise()), isolate); - } - } else if (object->IsJSGeneratorObject()) { - Handle generator = - Handle::cast(object); - Handle handled_by = JSObject::GetDataProperty( - generator, isolate->factory()->generator_outer_promise_symbol()); - if (handled_by->IsJSPromise()) return Handle::cast(handled_by); - } - return MaybeHandle(); -} - // static Handle JSPromise::TriggerPromiseReactions(Isolate* isolate, Handle reactions, @@ -16114,8 +16093,8 @@ Handle JSPromise::TriggerPromiseReactions(Isolate* isolate, *isolate->native_context()); STATIC_ASSERT(PromiseReaction::kFulfillHandlerOffset == PromiseFulfillReactionJobTask::kHandlerOffset); - STATIC_ASSERT(PromiseReaction::kPayloadOffset == - PromiseFulfillReactionJobTask::kPayloadOffset); + STATIC_ASSERT(PromiseReaction::kPromiseOrCapabilityOffset == + PromiseFulfillReactionJobTask::kPromiseOrCapabilityOffset); } else { DisallowHeapAllocation no_gc; HeapObject* handler = reaction->reject_handler(); @@ -16125,8 +16104,8 @@ Handle JSPromise::TriggerPromiseReactions(Isolate* isolate, Handle::cast(task)->set_context( *isolate->native_context()); Handle::cast(task)->set_handler(handler); - STATIC_ASSERT(PromiseReaction::kPayloadOffset == - PromiseRejectReactionJobTask::kPayloadOffset); + STATIC_ASSERT(PromiseReaction::kPromiseOrCapabilityOffset == + PromiseRejectReactionJobTask::kPromiseOrCapabilityOffset); } isolate->EnqueueMicrotask(Handle::cast(task)); diff --git a/deps/v8/src/objects/js-promise.h b/deps/v8/src/objects/js-promise.h index 20a0a90131a06f..434bae893380d5 100644 --- a/deps/v8/src/objects/js-promise.h +++ b/deps/v8/src/objects/js-promise.h @@ -59,12 +59,6 @@ class JSPromise : public JSObject { V8_WARN_UNUSED_RESULT static MaybeHandle Resolve( Handle promise, Handle resolution); - // This is a helper that extracts the JSPromise from the input - // {object}, which is used as a payload for PromiseReaction and - // PromiseReactionJobTask. - V8_WARN_UNUSED_RESULT static MaybeHandle From( - Handle object); - DECL_CAST(JSPromise) // Dispatched behavior. diff --git a/deps/v8/src/objects/promise-inl.h b/deps/v8/src/objects/promise-inl.h index 4283f0aa19483e..f9fb6110f346c1 100644 --- a/deps/v8/src/objects/promise-inl.h +++ b/deps/v8/src/objects/promise-inl.h @@ -23,7 +23,8 @@ CAST_ACCESSOR(PromiseResolveThenableJobTask) ACCESSORS(PromiseReaction, next, Object, kNextOffset) ACCESSORS(PromiseReaction, reject_handler, HeapObject, kRejectHandlerOffset) ACCESSORS(PromiseReaction, fulfill_handler, HeapObject, kFulfillHandlerOffset) -ACCESSORS(PromiseReaction, payload, HeapObject, kPayloadOffset) +ACCESSORS(PromiseReaction, promise_or_capability, HeapObject, + kPromiseOrCapabilityOffset) ACCESSORS(PromiseResolveThenableJobTask, context, Context, kContextOffset) ACCESSORS(PromiseResolveThenableJobTask, promise_to_resolve, JSPromise, @@ -34,7 +35,8 @@ ACCESSORS(PromiseResolveThenableJobTask, thenable, JSReceiver, kThenableOffset) ACCESSORS(PromiseReactionJobTask, context, Context, kContextOffset) ACCESSORS(PromiseReactionJobTask, argument, Object, kArgumentOffset); ACCESSORS(PromiseReactionJobTask, handler, HeapObject, kHandlerOffset); -ACCESSORS(PromiseReactionJobTask, payload, HeapObject, kPayloadOffset); +ACCESSORS(PromiseReactionJobTask, promise_or_capability, HeapObject, + kPromiseOrCapabilityOffset); ACCESSORS(PromiseCapability, promise, HeapObject, kPromiseOffset) ACCESSORS(PromiseCapability, resolve, Object, kResolveOffset) diff --git a/deps/v8/src/objects/promise.h b/deps/v8/src/objects/promise.h index 36ef4afe1d6e68..5ff5dac6f372ea 100644 --- a/deps/v8/src/objects/promise.h +++ b/deps/v8/src/objects/promise.h @@ -26,16 +26,15 @@ class PromiseReactionJobTask : public Microtask { public: DECL_ACCESSORS(argument, Object) DECL_ACCESSORS(context, Context) - // [handler]: This is either a Code object, a Callable or Undefined. DECL_ACCESSORS(handler, HeapObject) - // [payload]: Usually a JSPromise or a PromiseCapability. - DECL_ACCESSORS(payload, HeapObject) + // [promise_or_capability]: Either a JSPromise or a PromiseCapability. + DECL_ACCESSORS(promise_or_capability, HeapObject) static const int kArgumentOffset = Microtask::kHeaderSize; static const int kContextOffset = kArgumentOffset + kPointerSize; static const int kHandlerOffset = kContextOffset + kPointerSize; - static const int kPayloadOffset = kHandlerOffset + kPointerSize; - static const int kSize = kPayloadOffset + kPointerSize; + static const int kPromiseOrCapabilityOffset = kHandlerOffset + kPointerSize; + static const int kSize = kPromiseOrCapabilityOffset + kPointerSize; // Dispatched behavior. DECL_CAST(PromiseReactionJobTask) @@ -121,10 +120,9 @@ class PromiseCapability : public Struct { // of microtasks. So the size of PromiseReaction and the size of the // PromiseReactionJobTask has to be same for this to work. // -// The PromiseReaction::payload field usually holds a JSPromise -// instance (in the fast case of a native promise) or a PromiseCapability -// in case of a custom promise. For await we store the JSGeneratorObject -// here and use custom Code handlers. +// The PromiseReaction::promise_or_capability field can either hold a JSPromise +// instance (in the fast case of a native promise) or a PromiseCapability in +// case of a Promise subclass. // // We need to keep the context in the PromiseReaction so that we can run // the default handlers (in case they are undefined) in the proper context. @@ -138,18 +136,16 @@ class PromiseReaction : public Struct { enum Type { kFulfill, kReject }; DECL_ACCESSORS(next, Object) - // [reject_handler]: This is either a Code object, a Callable or Undefined. DECL_ACCESSORS(reject_handler, HeapObject) - // [fulfill_handler]: This is either a Code object, a Callable or Undefined. DECL_ACCESSORS(fulfill_handler, HeapObject) - // [payload]: Usually a JSPromise or a PromiseCapability. - DECL_ACCESSORS(payload, HeapObject) + DECL_ACCESSORS(promise_or_capability, HeapObject) static const int kNextOffset = Struct::kHeaderSize; static const int kRejectHandlerOffset = kNextOffset + kPointerSize; static const int kFulfillHandlerOffset = kRejectHandlerOffset + kPointerSize; - static const int kPayloadOffset = kFulfillHandlerOffset + kPointerSize; - static const int kSize = kPayloadOffset + kPointerSize; + static const int kPromiseOrCapabilityOffset = + kFulfillHandlerOffset + kPointerSize; + static const int kSize = kPromiseOrCapabilityOffset + kPointerSize; // Dispatched behavior. DECL_CAST(PromiseReaction) diff --git a/deps/v8/src/runtime/runtime-generator.cc b/deps/v8/src/runtime/runtime-generator.cc index e69d334042681c..3c7c808c30b66a 100644 --- a/deps/v8/src/runtime/runtime-generator.cc +++ b/deps/v8/src/runtime/runtime-generator.cc @@ -70,30 +70,6 @@ RUNTIME_FUNCTION(Runtime_GeneratorGetInputOrDebugPos) { UNREACHABLE(); } -RUNTIME_FUNCTION(Runtime_AsyncFunctionAwaitCaught) { - // Runtime call is implemented in InterpreterIntrinsics and lowered in - // JSIntrinsicLowering - UNREACHABLE(); -} - -RUNTIME_FUNCTION(Runtime_AsyncFunctionAwaitUncaught) { - // Runtime call is implemented in InterpreterIntrinsics and lowered in - // JSIntrinsicLowering - UNREACHABLE(); -} - -RUNTIME_FUNCTION(Runtime_AsyncGeneratorAwaitCaught) { - // Runtime call is implemented in InterpreterIntrinsics and lowered in - // JSIntrinsicLowering - UNREACHABLE(); -} - -RUNTIME_FUNCTION(Runtime_AsyncGeneratorAwaitUncaught) { - // Runtime call is implemented in InterpreterIntrinsics and lowered in - // JSIntrinsicLowering - UNREACHABLE(); -} - RUNTIME_FUNCTION(Runtime_AsyncGeneratorResolve) { // Runtime call is implemented in InterpreterIntrinsics and lowered in // JSIntrinsicLowering diff --git a/deps/v8/src/runtime/runtime-promise.cc b/deps/v8/src/runtime/runtime-promise.cc index b2a7e8bae1b701..f5b9db3c028b0e 100644 --- a/deps/v8/src/runtime/runtime-promise.cc +++ b/deps/v8/src/runtime/runtime-promise.cc @@ -114,14 +114,13 @@ RUNTIME_FUNCTION(Runtime_PromiseHookInit) { RUNTIME_FUNCTION(Runtime_PromiseHookBefore) { HandleScope scope(isolate); DCHECK_EQ(1, args.length()); - CONVERT_ARG_HANDLE_CHECKED(HeapObject, payload, 0); - Handle promise; - if (JSPromise::From(payload).ToHandle(&promise)) { - if (isolate->debug()->is_active()) isolate->PushPromise(promise); - if (promise->IsJSPromise()) { - isolate->RunPromiseHook(PromiseHookType::kBefore, promise, - isolate->factory()->undefined_value()); - } + CONVERT_ARG_HANDLE_CHECKED(JSReceiver, maybe_promise, 0); + if (!maybe_promise->IsJSPromise()) return isolate->heap()->undefined_value(); + Handle promise = Handle::cast(maybe_promise); + if (isolate->debug()->is_active()) isolate->PushPromise(promise); + if (promise->IsJSPromise()) { + isolate->RunPromiseHook(PromiseHookType::kBefore, promise, + isolate->factory()->undefined_value()); } return isolate->heap()->undefined_value(); } @@ -129,14 +128,13 @@ RUNTIME_FUNCTION(Runtime_PromiseHookBefore) { RUNTIME_FUNCTION(Runtime_PromiseHookAfter) { HandleScope scope(isolate); DCHECK_EQ(1, args.length()); - CONVERT_ARG_HANDLE_CHECKED(HeapObject, payload, 0); - Handle promise; - if (JSPromise::From(payload).ToHandle(&promise)) { - if (isolate->debug()->is_active()) isolate->PopPromise(); - if (promise->IsJSPromise()) { - isolate->RunPromiseHook(PromiseHookType::kAfter, promise, - isolate->factory()->undefined_value()); - } + CONVERT_ARG_HANDLE_CHECKED(JSReceiver, maybe_promise, 0); + if (!maybe_promise->IsJSPromise()) return isolate->heap()->undefined_value(); + Handle promise = Handle::cast(maybe_promise); + if (isolate->debug()->is_active()) isolate->PopPromise(); + if (promise->IsJSPromise()) { + isolate->RunPromiseHook(PromiseHookType::kAfter, promise, + isolate->factory()->undefined_value()); } return isolate->heap()->undefined_value(); } diff --git a/deps/v8/src/runtime/runtime.h b/deps/v8/src/runtime/runtime.h index 48a63d500da527..37ce74e8250f2c 100644 --- a/deps/v8/src/runtime/runtime.h +++ b/deps/v8/src/runtime/runtime.h @@ -222,10 +222,6 @@ namespace internal { F(SetNativeFlag, 1, 1) #define FOR_EACH_INTRINSIC_GENERATOR(F) \ - F(AsyncFunctionAwaitCaught, 3, 1) \ - F(AsyncFunctionAwaitUncaught, 3, 1) \ - F(AsyncGeneratorAwaitCaught, 2, 1) \ - F(AsyncGeneratorAwaitUncaught, 2, 1) \ F(AsyncGeneratorHasCatchHandlerForPC, 1, 1) \ F(AsyncGeneratorReject, 2, 1) \ F(AsyncGeneratorResolve, 3, 1) \ diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/AsyncGenerators.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/AsyncGenerators.golden index df6b3723586533..2b4eb6b2cc5674 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/AsyncGenerators.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/AsyncGenerators.golden @@ -39,7 +39,7 @@ bytecodes: [ B(LdaUndefined), B(Star), R(6), B(Mov), R(0), R(5), - B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorAwaitUncaught), R(5), U8(2), + B(CallJSRuntime), U8(%async_generator_await_uncaught), R(5), U8(2), B(SuspendGenerator), R(0), R(0), U8(5), U8(1), B(ResumeGenerator), R(0), R(0), U8(5), B(Star), R(5), @@ -166,7 +166,7 @@ bytecodes: [ B(LdaUndefined), B(Star), R(6), B(Mov), R(0), R(5), - B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorAwaitUncaught), R(5), U8(2), + B(CallJSRuntime), U8(%async_generator_await_uncaught), R(5), U8(2), B(SuspendGenerator), R(0), R(0), U8(5), U8(2), B(ResumeGenerator), R(0), R(0), U8(5), B(Star), R(5), @@ -404,7 +404,7 @@ bytecodes: [ B(LdaUndefined), B(Star), R(16), B(Mov), R(2), R(15), - B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorAwaitUncaught), R(15), U8(2), + B(CallJSRuntime), U8(%async_generator_await_uncaught), R(15), U8(2), B(SuspendGenerator), R(2), R(0), U8(15), U8(2), B(ResumeGenerator), R(2), R(0), U8(15), B(Star), R(15), @@ -580,7 +580,7 @@ bytecodes: [ B(Jump), U8(2), B(Star), R(13), B(Mov), R(0), R(12), - B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorAwaitUncaught), R(12), U8(2), + B(CallJSRuntime), U8(%async_generator_await_uncaught), R(12), U8(2), /* 49 E> */ B(SuspendGenerator), R(0), R(0), U8(12), U8(1), B(ResumeGenerator), R(0), R(0), U8(12), B(Star), R(12), @@ -598,7 +598,7 @@ bytecodes: [ B(CallRuntime), U16(Runtime::kThrowThrowMethodMissing), R(0), U8(0), B(Star), R(13), B(Mov), R(0), R(12), - B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorAwaitUncaught), R(12), U8(2), + B(CallJSRuntime), U8(%async_generator_await_uncaught), R(12), U8(2), /* 49 E> */ B(SuspendGenerator), R(0), R(0), U8(12), U8(2), B(ResumeGenerator), R(0), R(0), U8(12), B(Star), R(12), @@ -639,7 +639,7 @@ bytecodes: [ B(LdaUndefined), B(Star), R(6), B(Mov), R(0), R(5), - B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorAwaitUncaught), R(5), U8(2), + B(CallJSRuntime), U8(%async_generator_await_uncaught), R(5), U8(2), B(SuspendGenerator), R(0), R(0), U8(5), U8(4), B(ResumeGenerator), R(0), R(0), U8(5), B(Star), R(5), diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/ForAwaitOf.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/ForAwaitOf.golden index 95400dacf803ac..4d36315f027988 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/ForAwaitOf.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/ForAwaitOf.golden @@ -53,7 +53,7 @@ bytecodes: [ B(Star), R(21), B(Mov), R(2), R(20), B(Mov), R(11), R(22), - B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionAwaitUncaught), R(20), U8(3), + B(CallJSRuntime), U8(%async_function_await_uncaught), R(20), U8(3), /* 40 E> */ B(SuspendGenerator), R(2), R(0), U8(20), U8(0), B(ResumeGenerator), R(2), R(0), U8(20), B(Star), R(20), @@ -137,7 +137,7 @@ bytecodes: [ B(Star), R(21), B(Mov), R(2), R(20), B(Mov), R(11), R(22), - B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionAwaitCaught), R(20), U8(3), + B(CallJSRuntime), U8(%async_function_await_caught), R(20), U8(3), B(SuspendGenerator), R(2), R(0), U8(20), U8(1), B(ResumeGenerator), R(2), R(0), U8(20), B(Star), R(20), @@ -160,7 +160,7 @@ bytecodes: [ B(Star), R(20), B(Mov), R(2), R(19), B(Mov), R(11), R(21), - B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionAwaitUncaught), R(19), U8(3), + B(CallJSRuntime), U8(%async_function_await_uncaught), R(19), U8(3), B(SuspendGenerator), R(2), R(0), U8(19), U8(2), B(ResumeGenerator), R(2), R(0), U8(19), B(Star), R(19), @@ -306,7 +306,7 @@ bytecodes: [ B(Star), R(21), B(Mov), R(2), R(20), B(Mov), R(11), R(22), - B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionAwaitUncaught), R(20), U8(3), + B(CallJSRuntime), U8(%async_function_await_uncaught), R(20), U8(3), /* 40 E> */ B(SuspendGenerator), R(2), R(0), U8(20), U8(0), B(ResumeGenerator), R(2), R(0), U8(20), B(Star), R(20), @@ -391,7 +391,7 @@ bytecodes: [ B(Star), R(21), B(Mov), R(2), R(20), B(Mov), R(11), R(22), - B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionAwaitCaught), R(20), U8(3), + B(CallJSRuntime), U8(%async_function_await_caught), R(20), U8(3), B(SuspendGenerator), R(2), R(0), U8(20), U8(1), B(ResumeGenerator), R(2), R(0), U8(20), B(Star), R(20), @@ -414,7 +414,7 @@ bytecodes: [ B(Star), R(20), B(Mov), R(2), R(19), B(Mov), R(11), R(21), - B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionAwaitUncaught), R(19), U8(3), + B(CallJSRuntime), U8(%async_function_await_uncaught), R(19), U8(3), B(SuspendGenerator), R(2), R(0), U8(19), U8(2), B(ResumeGenerator), R(2), R(0), U8(19), B(Star), R(19), @@ -575,7 +575,7 @@ bytecodes: [ B(Star), R(21), B(Mov), R(2), R(20), B(Mov), R(11), R(22), - B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionAwaitUncaught), R(20), U8(3), + B(CallJSRuntime), U8(%async_function_await_uncaught), R(20), U8(3), /* 40 E> */ B(SuspendGenerator), R(2), R(0), U8(20), U8(0), B(ResumeGenerator), R(2), R(0), U8(20), B(Star), R(20), @@ -667,7 +667,7 @@ bytecodes: [ B(Star), R(21), B(Mov), R(2), R(20), B(Mov), R(11), R(22), - B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionAwaitCaught), R(20), U8(3), + B(CallJSRuntime), U8(%async_function_await_caught), R(20), U8(3), B(SuspendGenerator), R(2), R(0), U8(20), U8(1), B(ResumeGenerator), R(2), R(0), U8(20), B(Star), R(20), @@ -690,7 +690,7 @@ bytecodes: [ B(Star), R(20), B(Mov), R(2), R(19), B(Mov), R(11), R(21), - B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionAwaitUncaught), R(19), U8(3), + B(CallJSRuntime), U8(%async_function_await_uncaught), R(19), U8(3), B(SuspendGenerator), R(2), R(0), U8(19), U8(2), B(ResumeGenerator), R(2), R(0), U8(19), B(Star), R(19), diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/ForOfLoop.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/ForOfLoop.golden index 1a0155da79c809..f92076e6e65ebe 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/ForOfLoop.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/ForOfLoop.golden @@ -1196,7 +1196,7 @@ bytecodes: [ /* 45 S> */ B(Mov), R(2), R(21), B(Mov), R(0), R(22), B(Mov), R(11), R(23), - B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionAwaitUncaught), R(21), U8(3), + B(CallJSRuntime), U8(%async_function_await_uncaught), R(21), U8(3), /* 45 E> */ B(SuspendGenerator), R(2), R(0), U8(21), U8(0), B(ResumeGenerator), R(2), R(0), U8(21), B(Star), R(21), diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/StandardForLoop.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/StandardForLoop.golden index 80609db7b80b5b..7edf446ce33d53 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/StandardForLoop.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/StandardForLoop.golden @@ -493,7 +493,7 @@ bytecodes: [ /* 52 S> */ B(Mov), R(1), R(7), B(Mov), R(0), R(8), B(Mov), R(2), R(9), - B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionAwaitUncaught), R(7), U8(3), + B(CallJSRuntime), U8(%async_function_await_uncaught), R(7), U8(3), /* 52 E> */ B(SuspendGenerator), R(1), R(0), U8(7), U8(0), B(ResumeGenerator), R(1), R(0), U8(7), B(Star), R(7), diff --git a/deps/v8/test/cctest/test-api.cc b/deps/v8/test/cctest/test-api.cc index 2f552a9d9d9f6a..8b93944d93363f 100644 --- a/deps/v8/test/cctest/test-api.cc +++ b/deps/v8/test/cctest/test-api.cc @@ -18358,12 +18358,6 @@ TEST(PromiseHook) { CHECK_EQ(v8::Promise::kFulfilled, GetPromise("p")->State()); CHECK_EQ(9, promise_hook_data->promise_hook_count); - promise_hook_data->Reset(); - source = "(async() => await p)();\n"; - - CompileRun(source); - CHECK_EQ(11, promise_hook_data->promise_hook_count); - delete promise_hook_data; isolate->SetPromiseHook(nullptr); } diff --git a/deps/v8/tools/v8heapconst.py b/deps/v8/tools/v8heapconst.py index 1e57ce64a9e297..e3b29f820423b0 100644 --- a/deps/v8/tools/v8heapconst.py +++ b/deps/v8/tools/v8heapconst.py @@ -263,12 +263,12 @@ ("MAP_SPACE", 0x04511): (173, "Tuple2Map"), ("MAP_SPACE", 0x04569): (171, "ScriptMap"), ("MAP_SPACE", 0x045c1): (163, "InterceptorInfoMap"), - ("MAP_SPACE", 0x04619): (154, "AccessorInfoMap"), - ("MAP_SPACE", 0x04671): (153, "AccessCheckInfoMap"), - ("MAP_SPACE", 0x046c9): (155, "AccessorPairMap"), - ("MAP_SPACE", 0x04721): (156, "AliasedArgumentsEntryMap"), - ("MAP_SPACE", 0x04779): (157, "AllocationMementoMap"), - ("MAP_SPACE", 0x047d1): (158, "AllocationSiteMap"), + ("MAP_SPACE", 0x04619): (158, "AllocationSiteMap"), + ("MAP_SPACE", 0x04671): (154, "AccessorInfoMap"), + ("MAP_SPACE", 0x046c9): (153, "AccessCheckInfoMap"), + ("MAP_SPACE", 0x04721): (155, "AccessorPairMap"), + ("MAP_SPACE", 0x04779): (156, "AliasedArgumentsEntryMap"), + ("MAP_SPACE", 0x047d1): (157, "AllocationMementoMap"), ("MAP_SPACE", 0x04829): (159, "AsyncGeneratorRequestMap"), ("MAP_SPACE", 0x04881): (160, "ContextExtensionMap"), ("MAP_SPACE", 0x048d9): (161, "DebugInfoMap"), @@ -366,4 +366,4 @@ "NATIVE", ) -# This set of constants is generated from a shipping build. +# This set of constants is generated from a non-shipping build. From 4b5b1a9beb8a56ac3f6c7d1f823a51a81c5db50e Mon Sep 17 00:00:00 2001 From: Timothy Gu Date: Fri, 18 May 2018 11:36:50 -0700 Subject: [PATCH 09/15] deps: cherry-pick 6989b3f6d7 from V8 upstream Original commit message: Fix default Intl language tag handling With certain ICU data bundles (such as the Node.js "small-icu"), %GetDefaultICULocale() may return a more specific language tag (e.g. "en-US") than what's available (e.g. "en"). In those cases, consider the more specific language tag supported. This CL also resolves the following Node.js issue: https://github.com/nodejs/node/issues/15223 Bug: v8:7024 Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng Change-Id: Ifda0776b3418734d5caa8af4e50c17cda95add73 Reviewed-on: https://chromium-review.googlesource.com/668350 Commit-Queue: Daniel Ehrenberg Reviewed-by: Daniel Ehrenberg Cr-Commit-Position: refs/heads/master@{#52716} PR-URL: https://github.com/nodejs/node/pull/20826 Fixes: https://github.com/nodejs/node/issues/15223 Refs: https://github.com/v8/v8/commit/6989b3f6d7d6a5e68127332296723317917821eb Reviewed-By: James M Snell Reviewed-By: Anatoli Papirovski Reviewed-By: Ben Noordhuis --- common.gypi | 2 +- deps/v8/src/js/intl.js | 89 ++++++++++++------- deps/v8/test/intl/assert.js | 41 +++++++++ .../intl/break-iterator/default-locale.js | 4 +- .../wellformed-unsupported-locale.js | 2 +- deps/v8/test/intl/collator/default-locale.js | 11 ++- .../collator/wellformed-unsupported-locale.js | 2 +- .../test/intl/date-format/default-locale.js | 4 +- .../wellformed-unsupported-locale.js | 2 +- .../test/intl/number-format/default-locale.js | 4 +- .../wellformed-unsupported-locale.js | 2 +- deps/v8/test/mjsunit/regress/regress-6288.js | 2 +- 12 files changed, 119 insertions(+), 46 deletions(-) diff --git a/common.gypi b/common.gypi index 077fd57f507e93..641aa90b17c1d3 100644 --- a/common.gypi +++ b/common.gypi @@ -27,7 +27,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.6', + 'v8_embedder_string': '-node.7', # Enable disassembler for `--print-code` v8 options 'v8_enable_disassembler': 1, diff --git a/deps/v8/src/js/intl.js b/deps/v8/src/js/intl.js index 53fbe1f9473267..3c7112716c30cc 100644 --- a/deps/v8/src/js/intl.js +++ b/deps/v8/src/js/intl.js @@ -152,18 +152,11 @@ var AVAILABLE_LOCALES = { */ var DEFAULT_ICU_LOCALE = UNDEFINED; -function GetDefaultICULocaleJS(service) { +function GetDefaultICULocaleJS() { if (IS_UNDEFINED(DEFAULT_ICU_LOCALE)) { DEFAULT_ICU_LOCALE = %GetDefaultICULocale(); } - // Check that this is a valid default for this service, - // otherwise fall back to "und" - // TODO(littledan,jshin): AvailableLocalesOf sometimes excludes locales - // which don't require tailoring, but work fine with root data. Look into - // exposing this fact in ICU or the way Chrome bundles data. - return (IS_UNDEFINED(service) || - HAS_OWN_PROPERTY(getAvailableLocalesOf(service), DEFAULT_ICU_LOCALE)) - ? DEFAULT_ICU_LOCALE : "und"; + return DEFAULT_ICU_LOCALE; } /** @@ -434,6 +427,48 @@ function resolveLocale(service, requestedLocales, options) { } +/** + * Look up the longest non-empty prefix of |locale| that is an element of + * |availableLocales|. Returns undefined when the |locale| is completely + * unsupported by |availableLocales|. + */ +function bestAvailableLocale(availableLocales, locale) { + do { + if (!IS_UNDEFINED(availableLocales[locale])) { + return locale; + } + // Truncate locale if possible. + var pos = %StringLastIndexOf(locale, '-'); + if (pos === -1) { + break; + } + locale = %_Call(StringSubstring, locale, 0, pos); + } while (true); + + return UNDEFINED; +} + + +/** + * Try to match any mutation of |requestedLocale| against |availableLocales|. + */ +function attemptSingleLookup(availableLocales, requestedLocale) { + // Remove all extensions. + var noExtensionsLocale = %RegExpInternalReplace( + GetAnyExtensionRE(), requestedLocale, ''); + var availableLocale = bestAvailableLocale( + availableLocales, requestedLocale); + if (!IS_UNDEFINED(availableLocale)) { + // Return the resolved locale and extension. + var extensionMatch = %regexp_internal_match( + GetUnicodeExtensionRE(), requestedLocale); + var extension = IS_NULL(extensionMatch) ? '' : extensionMatch[0]; + return {locale: availableLocale, extension: extension}; + } + return UNDEFINED; +} + + /** * Returns best matched supported locale and extension info using basic * lookup algorithm. @@ -446,31 +481,25 @@ function lookupMatcher(service, requestedLocales) { var availableLocales = getAvailableLocalesOf(service); for (var i = 0; i < requestedLocales.length; ++i) { - // Remove all extensions. - var locale = %RegExpInternalReplace( - GetAnyExtensionRE(), requestedLocales[i], ''); - do { - if (!IS_UNDEFINED(availableLocales[locale])) { - // Return the resolved locale and extension. - var extensionMatch = %regexp_internal_match( - GetUnicodeExtensionRE(), requestedLocales[i]); - var extension = IS_NULL(extensionMatch) ? '' : extensionMatch[0]; - return {locale: locale, extension: extension, position: i}; - } - // Truncate locale if possible. - var pos = %StringLastIndexOf(locale, '-'); - if (pos === -1) { - break; - } - locale = %_Call(StringSubstring, locale, 0, pos); - } while (true); + var result = attemptSingleLookup(availableLocales, requestedLocales[i]); + if (!IS_UNDEFINED(result)) { + return result; + } + } + + var defLocale = GetDefaultICULocaleJS(); + + // While ECMA-402 returns defLocale directly, we have to check if it is + // supported, as such support is not guaranteed. + var result = attemptSingleLookup(availableLocales, defLocale); + if (!IS_UNDEFINED(result)) { + return result; } // Didn't find a match, return default. return { - locale: GetDefaultICULocaleJS(service), - extension: '', - position: -1 + locale: 'und', + extension: '' }; } diff --git a/deps/v8/test/intl/assert.js b/deps/v8/test/intl/assert.js index d8cc85849f463a..c11e7c0bbf8914 100644 --- a/deps/v8/test/intl/assert.js +++ b/deps/v8/test/intl/assert.js @@ -132,6 +132,16 @@ function assertFalse(value, user_message = '') { } +/** + * Throws if value is null. + */ +function assertNotNull(value, user_message = '') { + if (value === null) { + fail("not null", value, user_message); + } +} + + /** * Runs code() and asserts that it throws the specified exception. */ @@ -189,3 +199,34 @@ function assertInstanceof(obj, type) { (actualTypeName ? ' but of < ' + actualTypeName + '>' : '')); } } + + +/** + * Split a BCP 47 language tag into locale and extension. + */ +function splitLanguageTag(tag) { + var extRe = /(-[0-9A-Za-z](-[0-9A-Za-z]{2,8})+)+$/; + var match = %regexp_internal_match(extRe, tag); + if (match) { + return { locale: tag.slice(0, match.index), extension: match[0] }; + } + + return { locale: tag, extension: '' }; +} + + +/** + * Throw if |parent| is not a more general language tag of |child|, nor |child| + * itself, per BCP 47 rules. + */ +function assertLanguageTag(child, parent) { + var childSplit = splitLanguageTag(child); + var parentSplit = splitLanguageTag(parent); + + // Do not compare extensions at this moment, as %GetDefaultICULocale() + // doesn't always output something we support. + if (childSplit.locale !== parentSplit.locale && + !childSplit.locale.startsWith(parentSplit.locale + '-')) { + fail(child, parent, 'language tag comparison'); + } +} diff --git a/deps/v8/test/intl/break-iterator/default-locale.js b/deps/v8/test/intl/break-iterator/default-locale.js index d8d5aeadb27510..e1a42a100a6b0f 100644 --- a/deps/v8/test/intl/break-iterator/default-locale.js +++ b/deps/v8/test/intl/break-iterator/default-locale.js @@ -37,8 +37,8 @@ assertFalse(options.locale === 'und'); assertFalse(options.locale === ''); assertFalse(options.locale === undefined); -// Then check for equality. -assertEquals(options.locale, %GetDefaultICULocale()); +// Then check for legitimacy. +assertLanguageTag(%GetDefaultICULocale(), options.locale); var iteratorNone = new Intl.v8BreakIterator(); assertEquals(options.locale, iteratorNone.resolvedOptions().locale); diff --git a/deps/v8/test/intl/break-iterator/wellformed-unsupported-locale.js b/deps/v8/test/intl/break-iterator/wellformed-unsupported-locale.js index 5ac8fbcd41583f..ffa44aef081eaf 100644 --- a/deps/v8/test/intl/break-iterator/wellformed-unsupported-locale.js +++ b/deps/v8/test/intl/break-iterator/wellformed-unsupported-locale.js @@ -29,4 +29,4 @@ var iterator = Intl.v8BreakIterator(['xx']); -assertEquals(iterator.resolvedOptions().locale, %GetDefaultICULocale()); +assertLanguageTag(%GetDefaultICULocale(), iterator.resolvedOptions().locale); diff --git a/deps/v8/test/intl/collator/default-locale.js b/deps/v8/test/intl/collator/default-locale.js index db9b1e73304114..5fc6ff4665c903 100644 --- a/deps/v8/test/intl/collator/default-locale.js +++ b/deps/v8/test/intl/collator/default-locale.js @@ -37,8 +37,8 @@ assertFalse(options.locale === 'und'); assertFalse(options.locale === ''); assertFalse(options.locale === undefined); -// Then check for equality. -assertEquals(options.locale, %GetDefaultICULocale()); +// Then check for legitimacy. +assertLanguageTag(%GetDefaultICULocale(), options.locale); var collatorNone = new Intl.Collator(); assertEquals(options.locale, collatorNone.resolvedOptions().locale); @@ -48,5 +48,8 @@ var collatorBraket = new Intl.Collator({}); assertEquals(options.locale, collatorBraket.resolvedOptions().locale); var collatorWithOptions = new Intl.Collator(undefined, {usage: 'search'}); -assertEquals(%GetDefaultICULocale() + '-u-co-search', - collatorWithOptions.resolvedOptions().locale); +assertLanguageTag(%GetDefaultICULocale(), + collatorWithOptions.resolvedOptions().locale); +assertNotNull( + %regexp_internal_match(/-u(-[a-zA-Z]+-[a-zA-Z]+)*-co-search/, + collatorWithOptions.resolvedOptions().locale)); diff --git a/deps/v8/test/intl/collator/wellformed-unsupported-locale.js b/deps/v8/test/intl/collator/wellformed-unsupported-locale.js index 3963d47a61ff85..ad89e3e2203e31 100644 --- a/deps/v8/test/intl/collator/wellformed-unsupported-locale.js +++ b/deps/v8/test/intl/collator/wellformed-unsupported-locale.js @@ -29,4 +29,4 @@ var collator = Intl.Collator(['xx']); -assertEquals(collator.resolvedOptions().locale, %GetDefaultICULocale()); +assertLanguageTag(%GetDefaultICULocale(), collator.resolvedOptions().locale); diff --git a/deps/v8/test/intl/date-format/default-locale.js b/deps/v8/test/intl/date-format/default-locale.js index 8e9b7fcec3e16e..2d79e895b54c38 100644 --- a/deps/v8/test/intl/date-format/default-locale.js +++ b/deps/v8/test/intl/date-format/default-locale.js @@ -37,8 +37,8 @@ assertFalse(options.locale === 'und'); assertFalse(options.locale === ''); assertFalse(options.locale === undefined); -// Then check for equality. -assertEquals(options.locale, %GetDefaultICULocale()); +// Then check for legitimacy. +assertLanguageTag(%GetDefaultICULocale(), options.locale); var dtfNone = new Intl.DateTimeFormat(); assertEquals(options.locale, dtfNone.resolvedOptions().locale); diff --git a/deps/v8/test/intl/date-format/wellformed-unsupported-locale.js b/deps/v8/test/intl/date-format/wellformed-unsupported-locale.js index 6f063abbd1a07c..b81216483250af 100644 --- a/deps/v8/test/intl/date-format/wellformed-unsupported-locale.js +++ b/deps/v8/test/intl/date-format/wellformed-unsupported-locale.js @@ -29,4 +29,4 @@ var dtf = Intl.DateTimeFormat(['xx']); -assertEquals(dtf.resolvedOptions().locale, %GetDefaultICULocale()); +assertLanguageTag(%GetDefaultICULocale(), dtf.resolvedOptions().locale); diff --git a/deps/v8/test/intl/number-format/default-locale.js b/deps/v8/test/intl/number-format/default-locale.js index cd67ba724f140f..a24aec23332786 100644 --- a/deps/v8/test/intl/number-format/default-locale.js +++ b/deps/v8/test/intl/number-format/default-locale.js @@ -37,8 +37,8 @@ assertFalse(options.locale === 'und'); assertFalse(options.locale === ''); assertFalse(options.locale === undefined); -// Then check for equality. -assertEquals(options.locale, %GetDefaultICULocale()); +// Then check for legitimacy. +assertLanguageTag(%GetDefaultICULocale(), options.locale); var nfNone = new Intl.NumberFormat(); assertEquals(options.locale, nfNone.resolvedOptions().locale); diff --git a/deps/v8/test/intl/number-format/wellformed-unsupported-locale.js b/deps/v8/test/intl/number-format/wellformed-unsupported-locale.js index 195eba4c19e09b..c51753928eeb87 100644 --- a/deps/v8/test/intl/number-format/wellformed-unsupported-locale.js +++ b/deps/v8/test/intl/number-format/wellformed-unsupported-locale.js @@ -29,4 +29,4 @@ var nf = Intl.NumberFormat(['xx']); -assertEquals(nf.resolvedOptions().locale, %GetDefaultICULocale()); +assertLanguageTag(%GetDefaultICULocale(), nf.resolvedOptions().locale); diff --git a/deps/v8/test/mjsunit/regress/regress-6288.js b/deps/v8/test/mjsunit/regress/regress-6288.js index 337af54c1a8303..5f550c31c8b72d 100644 --- a/deps/v8/test/mjsunit/regress/regress-6288.js +++ b/deps/v8/test/mjsunit/regress/regress-6288.js @@ -8,6 +8,6 @@ // DateTimeFormat but not Collation if (this.Intl) { - assertEquals('und', Intl.Collator().resolvedOptions().locale); + assertEquals('pt', Intl.Collator().resolvedOptions().locale); assertEquals('pt-BR', Intl.DateTimeFormat().resolvedOptions().locale); } From 4e90e9fa6491d33c2c2d7bea27c7816a4d366937 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Tue, 13 Mar 2018 15:08:31 +0100 Subject: [PATCH 10/15] util: add type check function for BigIntObject --- src/node_types.cc | 1 + test/.eslintrc.yaml | 1 + test/parallel/test-util-types.js | 1 + 3 files changed, 3 insertions(+) diff --git a/src/node_types.cc b/src/node_types.cc index bd7ea9cf23fff7..5dac1f6d275b63 100644 --- a/src/node_types.cc +++ b/src/node_types.cc @@ -13,6 +13,7 @@ namespace { V(External) \ V(Date) \ V(ArgumentsObject) \ + V(BigIntObject) \ V(BooleanObject) \ V(NumberObject) \ V(StringObject) \ diff --git a/test/.eslintrc.yaml b/test/.eslintrc.yaml index 7f67df154a9b35..c57d7505c984ff 100644 --- a/test/.eslintrc.yaml +++ b/test/.eslintrc.yaml @@ -49,6 +49,7 @@ rules: # Global scoped methods and vars globals: WebAssembly: false + BigInt: false BigInt64Array: false BigUint64Array: false SharedArrayBuffer: false diff --git a/test/parallel/test-util-types.js b/test/parallel/test-util-types.js index 24f613cc0b25ad..de5a89ab4abc80 100644 --- a/test/parallel/test-util-types.js +++ b/test/parallel/test-util-types.js @@ -20,6 +20,7 @@ for (const [ value, _method ] of [ [ new Number(), 'isNumberObject' ], [ new String(), 'isStringObject' ], [ Object(Symbol()), 'isSymbolObject' ], + [ Object(BigInt(0)), 'isBigIntObject' ], [ new Error(), 'isNativeError' ], [ new RegExp() ], [ async function() {}, 'isAsyncFunction' ], From aa942b8e00488a912606f0b90ae34f999191aee6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Thu, 12 Apr 2018 09:13:06 +0200 Subject: [PATCH 11/15] Revert "src: fix GetCpuProfiler() deprecation warning" This reverts commit f02b74dfdb364e1ccfa59ba7ee22790fe65548c3. --- src/env.cc | 14 +++----------- src/env.h | 4 ---- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/src/env.cc b/src/env.cc index f6303e6011f54c..a37efe08832f45 100644 --- a/src/env.cc +++ b/src/env.cc @@ -1,5 +1,6 @@ #include "node_internals.h" #include "async_wrap.h" +#include "v8-profiler.h" #include "node_buffer.h" #include "node_platform.h" #include "node_file.h" @@ -73,15 +74,6 @@ IsolateData::IsolateData(Isolate* isolate, IsolateData::~IsolateData() { if (platform_ != nullptr) platform_->UnregisterIsolate(this); - if (cpu_profiler_ != nullptr) - cpu_profiler_->Dispose(); -} - -v8::CpuProfiler* IsolateData::GetCpuProfiler() { - if (cpu_profiler_ != nullptr) return cpu_profiler_; - cpu_profiler_ = v8::CpuProfiler::New(isolate()); - CHECK_NOT_NULL(cpu_profiler_); - return cpu_profiler_; } @@ -260,12 +252,12 @@ void Environment::CleanupHandles() { void Environment::StartProfilerIdleNotifier() { uv_prepare_start(&idle_prepare_handle_, [](uv_prepare_t* handle) { Environment* env = ContainerOf(&Environment::idle_prepare_handle_, handle); - env->isolate_data()->GetCpuProfiler()->SetIdle(true); + env->isolate()->GetCpuProfiler()->SetIdle(true); }); uv_check_start(&idle_check_handle_, [](uv_check_t* handle) { Environment* env = ContainerOf(&Environment::idle_check_handle_, handle); - env->isolate_data()->GetCpuProfiler()->SetIdle(false); + env->isolate()->GetCpuProfiler()->SetIdle(false); }); } diff --git a/src/env.h b/src/env.h index c17cc59b5b5ccd..96252fa12a1397 100644 --- a/src/env.h +++ b/src/env.h @@ -32,7 +32,6 @@ #include "req_wrap.h" #include "util.h" #include "uv.h" -#include "v8-profiler.h" #include "v8.h" #include "node.h" #include "node_http2_state.h" @@ -369,8 +368,6 @@ class IsolateData { std::unordered_map> http2_static_strs; inline v8::Isolate* isolate() const; - v8::CpuProfiler* GetCpuProfiler(); - private: #define VP(PropertyName, StringValue) V(v8::Private, PropertyName) #define VS(PropertyName, StringValue) V(v8::String, PropertyName) @@ -386,7 +383,6 @@ class IsolateData { uv_loop_t* const event_loop_; uint32_t* const zero_fill_field_; MultiIsolatePlatform* platform_; - v8::CpuProfiler* cpu_profiler_ = nullptr; DISALLOW_COPY_AND_ASSIGN(IsolateData); }; From 485e080ba877e2692549e0af7ce3e28d31ec9d66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Fri, 23 Mar 2018 18:28:30 +0100 Subject: [PATCH 12/15] src: fix GetCpuProfiler() deprecation warning Refs: https://github.com/nodejs/node-v8/issues/46 --- src/env.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/env.cc b/src/env.cc index a37efe08832f45..32ffd402da049a 100644 --- a/src/env.cc +++ b/src/env.cc @@ -252,12 +252,12 @@ void Environment::CleanupHandles() { void Environment::StartProfilerIdleNotifier() { uv_prepare_start(&idle_prepare_handle_, [](uv_prepare_t* handle) { Environment* env = ContainerOf(&Environment::idle_prepare_handle_, handle); - env->isolate()->GetCpuProfiler()->SetIdle(true); + env->isolate()->SetIdle(true); }); uv_check_start(&idle_check_handle_, [](uv_check_t* handle) { Environment* env = ContainerOf(&Environment::idle_check_handle_, handle); - env->isolate()->GetCpuProfiler()->SetIdle(false); + env->isolate()->SetIdle(false); }); } From ede9f1676be45d80e4cbab0ea44c1d86f3e93b16 Mon Sep 17 00:00:00 2001 From: cjihrig Date: Tue, 27 Mar 2018 11:17:33 -0400 Subject: [PATCH 13/15] test: add read_only_space heap space v8.getHeapSpaceStatistics() now includes read_only_space in its results. Update test-v8-stats.js to account for this. Fixes: https://github.com/nodejs/node-v8/issues/44 --- test/parallel/test-v8-stats.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/parallel/test-v8-stats.js b/test/parallel/test-v8-stats.js index 02182e2816bbc7..83689afc974e12 100644 --- a/test/parallel/test-v8-stats.js +++ b/test/parallel/test-v8-stats.js @@ -25,7 +25,8 @@ const expectedHeapSpaces = [ 'old_space', 'code_space', 'map_space', - 'large_object_space' + 'large_object_space', + 'read_only_space' ]; const heapSpaceStatistics = v8.getHeapSpaceStatistics(); const actualHeapSpaceNames = heapSpaceStatistics.map((s) => s.space_name); From 53725c96f8986761a2bb32d46de179df0b83feea Mon Sep 17 00:00:00 2001 From: cjihrig Date: Tue, 27 Mar 2018 12:16:51 -0400 Subject: [PATCH 14/15] test: update postmortem metadata test This commit updates the following postmortem metadata constants: - v8dbg_class_SharedFunctionInfo__code__Code - This is now combined with SharedFunctionInfo's function_data. - Renamed: v8dbg_class_SharedFunctionInfo__function_data__Object - V8 commit: https://github.com/v8/v8/commit/51ded9d3c0dc430217253595027c6ed207d8cc2d - v8dbg_class_SharedFunctionInfo__raw_name__Object and - v8dbg_class_SharedFunctionInfo__scope_info__ScopeInfo - These are now combined as name_or_scope_info. - Renamed: v8dbg_class_SharedFunctionInfo__name_or_scope_info__Object - V8 commit: https://github.com/v8/v8/commit/74a663be675924944a343f2aed71bbe60ef55764 - v8dbg_class_SharedFunctionInfo__compiler_hints__int - Renamed: v8dbg_class_SharedFunctionInfo__flags__int - V8 commit: https://github.com/v8/v8/commit/071b01b6406e8884b040cc54e763d4c3b4b18c39#diff-f3f182b0510ba2ee39ae87e421ff110b Fixes: https://github.com/nodejs/node-v8/issues/44 Fixes: https://github.com/nodejs/node-v8/issues/48 --- test/parallel/test-postmortem-metadata.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/test/parallel/test-postmortem-metadata.js b/test/parallel/test-postmortem-metadata.js index 1f4cc7e6056df7..82dfb2c9a9fb07 100644 --- a/test/parallel/test-postmortem-metadata.js +++ b/test/parallel/test-postmortem-metadata.js @@ -93,13 +93,12 @@ function getExpectedSymbols() { 'v8dbg_class_Script__source__Object', 'v8dbg_class_SeqOneByteString__chars__char', 'v8dbg_class_SeqTwoByteString__chars__char', - 'v8dbg_class_SharedFunctionInfo__code__Code', - 'v8dbg_class_SharedFunctionInfo__compiler_hints__int', + 'v8dbg_class_SharedFunctionInfo__function_data__Object', + 'v8dbg_class_SharedFunctionInfo__flags__int', 'v8dbg_class_SharedFunctionInfo__end_position__int', 'v8dbg_class_SharedFunctionInfo__function_identifier__Object', 'v8dbg_class_SharedFunctionInfo__internal_formal_parameter_count__int', - 'v8dbg_class_SharedFunctionInfo__raw_name__Object', - 'v8dbg_class_SharedFunctionInfo__scope_info__ScopeInfo', + 'v8dbg_class_SharedFunctionInfo__name_or_scope_info__Object', 'v8dbg_class_SharedFunctionInfo__script__Object', 'v8dbg_class_SharedFunctionInfo__start_position_and_type__int', 'v8dbg_class_SlicedString__offset__SMI', From daa55f2dca1fa0b12de79288c51291e728471292 Mon Sep 17 00:00:00 2001 From: cjihrig Date: Wed, 4 Apr 2018 02:51:07 +0000 Subject: [PATCH 15/15] src: update postmortem constant name This commit renames V8DBG_CLASS_SHAREDFUNCTIONINFO__RAW_NAME__OBJECT to V8DBG_CLASS_SHAREDFUNCTIONINFO__NAME_OR_SCOPE_INFO__OBJECT following an upstream change. --- src/v8abbr.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/v8abbr.h b/src/v8abbr.h index c4b244b5637bc7..9e8920204a386a 100644 --- a/src/v8abbr.h +++ b/src/v8abbr.h @@ -86,7 +86,7 @@ #define V8_OFF_FUNC_SHARED \ V8_OFF_HEAP(V8DBG_CLASS_JSFUNCTION__SHARED__SHAREDFUNCTIONINFO) #define V8_OFF_RAW_NAME \ - V8_OFF_HEAP(V8DBG_CLASS_SHAREDFUNCTIONINFO__RAW_NAME__OBJECT) + V8_OFF_HEAP(V8DBG_CLASS_SHAREDFUNCTIONINFO__NAME_OR_SCOPE_INFO__OBJECT) #define V8_OFF_SHARED_IDENT \ V8_OFF_HEAP(V8DBG_CLASS_SHAREDFUNCTIONINFO__FUNCTION_IDENTIFIER__OBJECT) #define V8_OFF_SHARED_SCRIPT \