diff --git a/patches/common/v8/.patches b/patches/common/v8/.patches index d575f05774c1..1be080a0b1fd 100644 --- a/patches/common/v8/.patches +++ b/patches/common/v8/.patches @@ -3,10 +3,8 @@ add_realloc.patch build_gn.patch array_buffer.patch export_platform.patch -dcheck.patch expose_mksnapshot.patch build-torque-with-x64-toolchain-on-arm.patch do_not_run_arm_arm64_mksnapshot_binaries.patch -reland_don_t_use_v8_initializers_code_in_v8_base.patch deps_provide_more_v8_backwards_compatibility.patch -deps_cherry-pick_88f8fe1_from_upstream_v8.patch +dcheck.patch diff --git a/patches/common/v8/add_realloc.patch b/patches/common/v8/add_realloc.patch index 7ec3560c8908..a302118734d8 100644 --- a/patches/common/v8/add_realloc.patch +++ b/patches/common/v8/add_realloc.patch @@ -12,10 +12,10 @@ when we override ReallocateBufferMemory, so we therefore need to implement Realloc on the v8 side. diff --git a/include/v8.h b/include/v8.h -index 03677d7af202d665c704dd771603322321b508cc..83b9d3d0d1f981edc444452b500df9fa5b89a056 100644 +index dd81ef81e3c0df11f5cac7a4c934b0a04e9de003..4b8fb04bc8210c0273157009b3560983b1322b18 100644 --- a/include/v8.h +++ b/include/v8.h -@@ -4526,6 +4526,13 @@ class V8_EXPORT ArrayBuffer : public Object { +@@ -4604,6 +4604,13 @@ class V8_EXPORT ArrayBuffer : public Object { */ virtual void* AllocateUninitialized(size_t length) = 0; @@ -30,10 +30,10 @@ index 03677d7af202d665c704dd771603322321b508cc..83b9d3d0d1f981edc444452b500df9fa * Free the memory block of size |length|, pointed to by |data|. * That memory is guaranteed to be previously allocated by |Allocate|. diff --git a/src/api.cc b/src/api.cc -index 1d993044db4a969209a90c1b1f9e88d82531a538..9ddef27b9f7004fb50290f0dd91d2994d9771466 100644 +index 634ad37115faa1795a20155ed0faf51421eb1543..56be5e2e007c0ea84653a5487abef49cc206efc3 100644 --- a/src/api.cc +++ b/src/api.cc -@@ -507,6 +507,10 @@ void V8::SetSnapshotDataBlob(StartupData* snapshot_blob) { +@@ -512,6 +512,10 @@ void V8::SetSnapshotDataBlob(StartupData* snapshot_blob) { i::V8::SetSnapshotBlob(snapshot_blob); } diff --git a/patches/common/v8/array_buffer.patch b/patches/common/v8/array_buffer.patch index 571df4569ee0..2fb78df74fce 100644 --- a/patches/common/v8/array_buffer.patch +++ b/patches/common/v8/array_buffer.patch @@ -5,10 +5,10 @@ Subject: array_buffer.patch diff --git a/include/v8.h b/include/v8.h -index 83b9d3d0d1f981edc444452b500df9fa5b89a056..6ebadc3b85b0f954305bc3a9187b996aa248a347 100644 +index 4b8fb04bc8210c0273157009b3560983b1322b18..f10a7950de2166804f779346bce580cfb2e7c3ec 100644 --- a/include/v8.h +++ b/include/v8.h -@@ -7661,6 +7661,9 @@ class V8_EXPORT Isolate { +@@ -7701,6 +7701,9 @@ class V8_EXPORT Isolate { */ void SetIdle(bool is_idle); @@ -19,10 +19,10 @@ index 83b9d3d0d1f981edc444452b500df9fa5b89a056..6ebadc3b85b0f954305bc3a9187b996a bool InContext(); diff --git a/src/api.cc b/src/api.cc -index 9ddef27b9f7004fb50290f0dd91d2994d9771466..b4a0f5bb5e484ea80dbfc234e207b44413f2d22f 100644 +index 56be5e2e007c0ea84653a5487abef49cc206efc3..dd22b2a30b632fb9507eb2e2b95837dd9b8810db 100644 --- a/src/api.cc +++ b/src/api.cc -@@ -8072,6 +8072,13 @@ void Isolate::SetIdle(bool is_idle) { +@@ -7966,6 +7966,13 @@ void Isolate::SetIdle(bool is_idle) { isolate->SetIdle(is_idle); } diff --git a/patches/common/v8/build-torque-with-x64-toolchain-on-arm.patch b/patches/common/v8/build-torque-with-x64-toolchain-on-arm.patch index f67f3afd7409..1ca409fc58a5 100644 --- a/patches/common/v8/build-torque-with-x64-toolchain-on-arm.patch +++ b/patches/common/v8/build-torque-with-x64-toolchain-on-arm.patch @@ -6,10 +6,10 @@ Subject: build-torque-with-x64-toolchain-on-arm.patch torque binary has to be run during the build. diff --git a/BUILD.gn b/BUILD.gn -index b47a698a2f41f221290861c938c15a38e34d7b00..c564baea42f22d727990752be8b4ed086ef273f2 100644 +index 2f8a6c932efb66c5e273b9e9d2dc5887db8c6265..698b6c827f7f3cd7dc6871156daf8467bc7ff605 100644 --- a/BUILD.gn +++ b/BUILD.gn -@@ -190,7 +190,8 @@ declare_args() { +@@ -184,7 +184,8 @@ declare_args() { v8_generator_toolchain = v8_snapshot_toolchain if (host_cpu == "x64" && @@ -19,7 +19,7 @@ index b47a698a2f41f221290861c938c15a38e34d7b00..c564baea42f22d727990752be8b4ed08 v8_generator_toolchain = "//build/toolchain/linux:clang_x64" } -@@ -3446,7 +3447,7 @@ if (v8_monolithic) { +@@ -3354,7 +3355,7 @@ if (v8_monolithic) { # Executables # @@ -28,7 +28,7 @@ index b47a698a2f41f221290861c938c15a38e34d7b00..c564baea42f22d727990752be8b4ed08 v8_executable("bytecode_builtins_list_generator") { visibility = [ ":*" ] # Only targets in this file can depend on this. -@@ -3492,7 +3493,7 @@ if (v8_use_snapshot && current_toolchain == v8_snapshot_toolchain) { +@@ -3404,7 +3405,7 @@ if (v8_use_snapshot && current_toolchain == v8_snapshot_toolchain) { } } diff --git a/patches/common/v8/build_gn.patch b/patches/common/v8/build_gn.patch index 2576c336e85b..3b3a4e5582cf 100644 --- a/patches/common/v8/build_gn.patch +++ b/patches/common/v8/build_gn.patch @@ -5,10 +5,10 @@ Subject: build_gn.patch diff --git a/BUILD.gn b/BUILD.gn -index 3c039428271d6598fc4ad7137334176d80b92631..9fe1e8d67a25955fea69be89e0bcc27cf5d8529d 100644 +index bdbb29c66b2fa82e8a942421a8bdfce3d94d6e8f..fb3cfe848e97e0952829e39db5b56571e993d6a2 100644 --- a/BUILD.gn +++ b/BUILD.gn -@@ -242,7 +242,7 @@ config("internal_config") { +@@ -236,7 +236,7 @@ config("internal_config") { configs = [ "//build/config/compiler:wexit_time_destructors" ] @@ -17,7 +17,7 @@ index 3c039428271d6598fc4ad7137334176d80b92631..9fe1e8d67a25955fea69be89e0bcc27c defines = [ "BUILDING_V8_SHARED" ] } } -@@ -3481,6 +3481,8 @@ if (v8_use_snapshot && current_toolchain == v8_snapshot_toolchain) { +@@ -3389,6 +3389,8 @@ if (v8_use_snapshot && current_toolchain == v8_snapshot_toolchain) { configs = [ ":internal_config" ] diff --git a/patches/common/v8/dcheck.patch b/patches/common/v8/dcheck.patch index 2637ee54c5ff..9345b8e34f3d 100644 --- a/patches/common/v8/dcheck.patch +++ b/patches/common/v8/dcheck.patch @@ -5,10 +5,10 @@ Subject: dcheck.patch diff --git a/src/api.cc b/src/api.cc -index b4a0f5bb5e484ea80dbfc234e207b44413f2d22f..f36e504161fed27392ef66ffc0ec87898958bf2d 100644 +index b23105badb1ce643b0d3dcf6716776c53af4dfec..1df0e8a1dd8b7d490c215fb0a65b7a89aefdc231 100644 --- a/src/api.cc +++ b/src/api.cc -@@ -8637,7 +8637,7 @@ void Isolate::SetPromiseRejectCallback(PromiseRejectCallback callback) { +@@ -8613,7 +8613,7 @@ void Isolate::SetPromiseRejectCallback(PromiseRejectCallback callback) { void Isolate::RunMicrotasks() { @@ -18,10 +18,10 @@ index b4a0f5bb5e484ea80dbfc234e207b44413f2d22f..f36e504161fed27392ef66ffc0ec8789 } diff --git a/src/heap/heap.cc b/src/heap/heap.cc -index 98a3ec8cbcf63f1446569d6458d1f4f4bdda2ca0..316b0e123af68ea0c7a50730ba04470a42918974 100644 +index ed1bb91037677a25a8b22a7096a100f7f1cd4d1b..2ca299a96a66c000b4ff2061f283c31f906846b7 100644 --- a/src/heap/heap.cc +++ b/src/heap/heap.cc -@@ -4723,9 +4723,9 @@ void Heap::TearDown() { +@@ -4710,9 +4710,9 @@ void Heap::TearDown() { void Heap::AddGCPrologueCallback(v8::Isolate::GCCallbackWithData callback, GCType gc_type, void* data) { DCHECK_NOT_NULL(callback); diff --git a/patches/common/v8/deps_backport_detailed_line_info_for_cpu_profiler.patch b/patches/common/v8/deps_backport_detailed_line_info_for_cpu_profiler.patch index c5a909227036..bb5ba1c5d157 100644 --- a/patches/common/v8/deps_backport_detailed_line_info_for_cpu_profiler.patch +++ b/patches/common/v8/deps_backport_detailed_line_info_for_cpu_profiler.patch @@ -20,10 +20,10 @@ Reviewed-By: James M Snell Reviewed-By: Ruben Bridgewater diff --git a/src/flag-definitions.h b/src/flag-definitions.h -index add6d1f4114118b199425ff6b835a286ade5e1ce..38f25aef81c026cd80d663d75250ce16034e3eb3 100644 +index e0d486feb1da25db98faa4222f014d79d9bc37e2..26798147f40e35f3496ceebd225f2de0fd105296 100644 --- a/src/flag-definitions.h +++ b/src/flag-definitions.h -@@ -1270,7 +1270,7 @@ DEFINE_BOOL(log_function_events, false, +@@ -1276,7 +1276,7 @@ DEFINE_BOOL(log_function_events, false, DEFINE_BOOL(prof, false, "Log statistical profiling information (implies --log-code).") diff --git a/patches/common/v8/deps_cherry-pick_88f8fe1_from_upstream_v8.patch b/patches/common/v8/deps_cherry-pick_88f8fe1_from_upstream_v8.patch deleted file mode 100644 index 96fe6d157ec5..000000000000 --- a/patches/common/v8/deps_cherry-pick_88f8fe1_from_upstream_v8.patch +++ /dev/null @@ -1,258 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Yang Guo -Date: Tue, 20 Nov 2018 08:59:38 +0100 -Subject: deps: cherry-pick 88f8fe1 from upstream V8 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Original commit message: - - Fix collection iterator preview with deleted entries - - We used to assume that we know the remaining entries returned by the - iterator based on the current index. However, that is not accurate, - since entries skipped by the current index could be deleted. - - In the new approach, we allocate conservatively and shrink the result. - - R=neis@chromium.org - - Bug: v8:8433 - Change-Id: I38a3004dc3af292daabb454bb76f38d65ef437e8 - Reviewed-on: https://chromium-review.googlesource.com/c/1325966 - Commit-Queue: Yang Guo - Reviewed-by: Georg Neis - Cr-Commit-Position: refs/heads/master@{#57360} - -Refs: https://github.com/v8/v8/commit/88f8fe19a863c6392bd296faf86c06eff2a41bc1 - -PR-URL: https://github.com/nodejs/node/pull/24514 -Refs: https://github.com/nodejs/node/issues/24053 -Reviewed-By: Michaël Zasso -Reviewed-By: Anna Henningsen -Reviewed-By: Gus Caplan -Reviewed-By: Joyee Cheung - -diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc -index b49202d6127083e1d642f39ec149ce2261061ea7..dd56f7cd985db38820c94fd41b2f7f24a01e1811 100644 ---- a/test/cctest/test-api.cc -+++ b/test/cctest/test-api.cc -@@ -29364,3 +29364,217 @@ TEST(PreviewMapIteratorEntriesWithDeleted) { - } - } - } -+ -+TEST(PreviewSetIteratorEntriesWithDeleted) { -+ LocalContext env; -+ v8::HandleScope handle_scope(env->GetIsolate()); -+ v8::Local context = env.local(); -+ -+ { -+ // Create set, delete entry, create iterator, preview. -+ v8::Local iterator = -+ CompileRun("var set = new Set([1,2,3]); set.delete(1); set.keys()") -+ ->ToObject(context) -+ .ToLocalChecked(); -+ bool is_key; -+ v8::Local entries = -+ iterator->PreviewEntries(&is_key).ToLocalChecked(); -+ CHECK(!is_key); -+ CHECK_EQ(2, entries->Length()); -+ CHECK_EQ(2, entries->Get(context, 0) -+ .ToLocalChecked() -+ ->Int32Value(context) -+ .FromJust()); -+ CHECK_EQ(3, entries->Get(context, 1) -+ .ToLocalChecked() -+ ->Int32Value(context) -+ .FromJust()); -+ } -+ { -+ // Create set, create iterator, delete entry, preview. -+ v8::Local iterator = -+ CompileRun("var set = new Set([1,2,3]); set.keys()") -+ ->ToObject(context) -+ .ToLocalChecked(); -+ CompileRun("set.delete(1);"); -+ bool is_key; -+ v8::Local entries = -+ iterator->PreviewEntries(&is_key).ToLocalChecked(); -+ CHECK(!is_key); -+ CHECK_EQ(2, entries->Length()); -+ CHECK_EQ(2, entries->Get(context, 0) -+ .ToLocalChecked() -+ ->Int32Value(context) -+ .FromJust()); -+ CHECK_EQ(3, entries->Get(context, 1) -+ .ToLocalChecked() -+ ->Int32Value(context) -+ .FromJust()); -+ } -+ { -+ // Create set, create iterator, delete entry, iterate, preview. -+ v8::Local iterator = -+ CompileRun("var set = new Set([1,2,3]); var it = set.keys(); it") -+ ->ToObject(context) -+ .ToLocalChecked(); -+ CompileRun("set.delete(1); it.next();"); -+ bool is_key; -+ v8::Local entries = -+ iterator->PreviewEntries(&is_key).ToLocalChecked(); -+ CHECK(!is_key); -+ CHECK_EQ(1, entries->Length()); -+ CHECK_EQ(3, entries->Get(context, 0) -+ .ToLocalChecked() -+ ->Int32Value(context) -+ .FromJust()); -+ } -+ { -+ // Create set, create iterator, delete entry, iterate until empty, preview. -+ v8::Local iterator = -+ CompileRun("var set = new Set([1,2,3]); var it = set.keys(); it") -+ ->ToObject(context) -+ .ToLocalChecked(); -+ CompileRun("set.delete(1); it.next(); it.next();"); -+ bool is_key; -+ v8::Local entries = -+ iterator->PreviewEntries(&is_key).ToLocalChecked(); -+ CHECK(!is_key); -+ CHECK_EQ(0, entries->Length()); -+ } -+ { -+ // Create set, create iterator, delete entry, iterate, trigger rehash, -+ // preview. -+ v8::Local iterator = -+ CompileRun("var set = new Set([1,2,3]); var it = set.keys(); it") -+ ->ToObject(context) -+ .ToLocalChecked(); -+ CompileRun("set.delete(1); it.next();"); -+ CompileRun("for (var i = 4; i < 20; i++) set.add(i);"); -+ bool is_key; -+ v8::Local entries = -+ iterator->PreviewEntries(&is_key).ToLocalChecked(); -+ CHECK(!is_key); -+ CHECK_EQ(17, entries->Length()); -+ for (uint32_t i = 0; i < 17; i++) { -+ CHECK_EQ(i + 3, entries->Get(context, i) -+ .ToLocalChecked() -+ ->Int32Value(context) -+ .FromJust()); -+ } -+ } -+} -+ -+TEST(PreviewMapIteratorEntriesWithDeleted) { -+ LocalContext env; -+ v8::HandleScope handle_scope(env->GetIsolate()); -+ v8::Local context = env.local(); -+ -+ { -+ // Create map, delete entry, create iterator, preview. -+ v8::Local iterator = CompileRun( -+ "var map = new Map();" -+ "var key = {}; map.set(key, 1);" -+ "map.set({}, 2); map.set({}, 3);" -+ "map.delete(key);" -+ "map.values()") -+ ->ToObject(context) -+ .ToLocalChecked(); -+ bool is_key; -+ v8::Local entries = -+ iterator->PreviewEntries(&is_key).ToLocalChecked(); -+ CHECK(!is_key); -+ CHECK_EQ(2, entries->Length()); -+ CHECK_EQ(2, entries->Get(context, 0) -+ .ToLocalChecked() -+ ->Int32Value(context) -+ .FromJust()); -+ CHECK_EQ(3, entries->Get(context, 1) -+ .ToLocalChecked() -+ ->Int32Value(context) -+ .FromJust()); -+ } -+ { -+ // Create map, create iterator, delete entry, preview. -+ v8::Local iterator = CompileRun( -+ "var map = new Map();" -+ "var key = {}; map.set(key, 1);" -+ "map.set({}, 2); map.set({}, 3);" -+ "map.values()") -+ ->ToObject(context) -+ .ToLocalChecked(); -+ CompileRun("map.delete(key);"); -+ bool is_key; -+ v8::Local entries = -+ iterator->PreviewEntries(&is_key).ToLocalChecked(); -+ CHECK(!is_key); -+ CHECK_EQ(2, entries->Length()); -+ CHECK_EQ(2, entries->Get(context, 0) -+ .ToLocalChecked() -+ ->Int32Value(context) -+ .FromJust()); -+ CHECK_EQ(3, entries->Get(context, 1) -+ .ToLocalChecked() -+ ->Int32Value(context) -+ .FromJust()); -+ } -+ { -+ // Create map, create iterator, delete entry, iterate, preview. -+ v8::Local iterator = CompileRun( -+ "var map = new Map();" -+ "var key = {}; map.set(key, 1);" -+ "map.set({}, 2); map.set({}, 3);" -+ "var it = map.values(); it") -+ ->ToObject(context) -+ .ToLocalChecked(); -+ CompileRun("map.delete(key); it.next();"); -+ bool is_key; -+ v8::Local entries = -+ iterator->PreviewEntries(&is_key).ToLocalChecked(); -+ CHECK(!is_key); -+ CHECK_EQ(1, entries->Length()); -+ CHECK_EQ(3, entries->Get(context, 0) -+ .ToLocalChecked() -+ ->Int32Value(context) -+ .FromJust()); -+ } -+ { -+ // Create map, create iterator, delete entry, iterate until empty, preview. -+ v8::Local iterator = CompileRun( -+ "var map = new Map();" -+ "var key = {}; map.set(key, 1);" -+ "map.set({}, 2); map.set({}, 3);" -+ "var it = map.values(); it") -+ ->ToObject(context) -+ .ToLocalChecked(); -+ CompileRun("map.delete(key); it.next(); it.next();"); -+ bool is_key; -+ v8::Local entries = -+ iterator->PreviewEntries(&is_key).ToLocalChecked(); -+ CHECK(!is_key); -+ CHECK_EQ(0, entries->Length()); -+ } -+ { -+ // Create map, create iterator, delete entry, iterate, trigger rehash, -+ // preview. -+ v8::Local iterator = CompileRun( -+ "var map = new Map();" -+ "var key = {}; map.set(key, 1);" -+ "map.set({}, 2); map.set({}, 3);" -+ "var it = map.values(); it") -+ ->ToObject(context) -+ .ToLocalChecked(); -+ CompileRun("map.delete(key); it.next();"); -+ CompileRun("for (var i = 4; i < 20; i++) map.set({}, i);"); -+ bool is_key; -+ v8::Local entries = -+ iterator->PreviewEntries(&is_key).ToLocalChecked(); -+ CHECK(!is_key); -+ CHECK_EQ(17, entries->Length()); -+ for (uint32_t i = 0; i < 17; i++) { -+ CHECK_EQ(i + 3, entries->Get(context, i) -+ .ToLocalChecked() -+ ->Int32Value(context) -+ .FromJust()); -+ } -+ } -+} diff --git a/patches/common/v8/deps_provide_more_v8_backwards_compatibility.patch b/patches/common/v8/deps_provide_more_v8_backwards_compatibility.patch index 6937a239afc6..483929de2dd5 100644 --- a/patches/common/v8/deps_provide_more_v8_backwards_compatibility.patch +++ b/patches/common/v8/deps_provide_more_v8_backwards_compatibility.patch @@ -22,10 +22,10 @@ Reviewed-By: Yang Guo Reviewed-By: Michaël Zasso diff --git a/include/v8.h b/include/v8.h -index 6ebadc3b85b0f954305bc3a9187b996aa248a347..955ea03cddf77ae5bbd91ea74b851720a93d08b2 100644 +index f10a7950de2166804f779346bce580cfb2e7c3ec..44c2e648baa708d7f30105504795e4ba5402e3b3 100644 --- a/include/v8.h +++ b/include/v8.h -@@ -998,6 +998,10 @@ class V8_EXPORT PrimitiveArray { +@@ -994,6 +994,10 @@ class V8_EXPORT PrimitiveArray { public: static Local New(Isolate* isolate, int length); int Length() const; @@ -36,7 +36,7 @@ index 6ebadc3b85b0f954305bc3a9187b996aa248a347..955ea03cddf77ae5bbd91ea74b851720 void Set(Isolate* isolate, int index, Local item); Local Get(Isolate* isolate, int index); }; -@@ -1705,6 +1709,8 @@ class V8_EXPORT StackTrace { +@@ -1697,6 +1701,8 @@ class V8_EXPORT StackTrace { /** * Returns a StackFrame at a particular index. */ @@ -45,7 +45,7 @@ index 6ebadc3b85b0f954305bc3a9187b996aa248a347..955ea03cddf77ae5bbd91ea74b851720 Local GetFrame(Isolate* isolate, uint32_t index) const; /** -@@ -2428,6 +2434,13 @@ class V8_EXPORT Value : public Data { +@@ -2405,6 +2411,13 @@ class V8_EXPORT Value : public Data { V8_DEPRECATE_SOON("Use maybe version", Local ToInt32(Isolate* isolate) const); @@ -59,7 +59,7 @@ index 6ebadc3b85b0f954305bc3a9187b996aa248a347..955ea03cddf77ae5bbd91ea74b851720 /** * Attempts to convert a string to an array index. * Returns an empty handle if the conversion fails. -@@ -2447,7 +2460,14 @@ class V8_EXPORT Value : public Data { +@@ -2424,7 +2437,14 @@ class V8_EXPORT Value : public Data { Local context) const; V8_WARN_UNUSED_RESULT Maybe Int32Value(Local context) const; @@ -74,7 +74,7 @@ index 6ebadc3b85b0f954305bc3a9187b996aa248a347..955ea03cddf77ae5bbd91ea74b851720 V8_WARN_UNUSED_RESULT Maybe Equals(Local context, Local that) const; bool StrictEquals(Local that) const; -@@ -2554,6 +2574,8 @@ class V8_EXPORT String : public Name { +@@ -2531,6 +2551,8 @@ class V8_EXPORT String : public Name { * Returns the number of bytes in the UTF-8 encoded * representation of this string. */ @@ -83,7 +83,7 @@ index 6ebadc3b85b0f954305bc3a9187b996aa248a347..955ea03cddf77ae5bbd91ea74b851720 int Utf8Length(Isolate* isolate) const; /** -@@ -2610,12 +2632,23 @@ class V8_EXPORT String : public Name { +@@ -2587,12 +2609,23 @@ class V8_EXPORT String : public Name { // 16-bit character codes. int Write(Isolate* isolate, uint16_t* buffer, int start = 0, int length = -1, int options = NO_OPTIONS) const; @@ -107,7 +107,7 @@ index 6ebadc3b85b0f954305bc3a9187b996aa248a347..955ea03cddf77ae5bbd91ea74b851720 /** * A zero length string. -@@ -2807,6 +2840,9 @@ class V8_EXPORT String : public Name { +@@ -2784,6 +2817,9 @@ class V8_EXPORT String : public Name { */ static Local Concat(Isolate* isolate, Local left, Local right); @@ -117,7 +117,7 @@ index 6ebadc3b85b0f954305bc3a9187b996aa248a347..955ea03cddf77ae5bbd91ea74b851720 /** * Creates a new external string using the data defined in the given -@@ -2875,6 +2911,8 @@ class V8_EXPORT String : public Name { +@@ -2852,6 +2888,8 @@ class V8_EXPORT String : public Name { */ class V8_EXPORT Utf8Value { public: @@ -126,7 +126,7 @@ index 6ebadc3b85b0f954305bc3a9187b996aa248a347..955ea03cddf77ae5bbd91ea74b851720 Utf8Value(Isolate* isolate, Local obj); ~Utf8Value(); char* operator*() { return str_; } -@@ -2898,6 +2936,7 @@ class V8_EXPORT String : public Name { +@@ -2875,6 +2913,7 @@ class V8_EXPORT String : public Name { */ class V8_EXPORT Value { public: @@ -134,7 +134,7 @@ index 6ebadc3b85b0f954305bc3a9187b996aa248a347..955ea03cddf77ae5bbd91ea74b851720 Value(Isolate* isolate, Local obj); ~Value(); uint16_t* operator*() { return str_; } -@@ -5180,6 +5219,8 @@ class V8_EXPORT BooleanObject : public Object { +@@ -5265,6 +5304,8 @@ class V8_EXPORT BooleanObject : public Object { class V8_EXPORT StringObject : public Object { public: static Local New(Isolate* isolate, Local value); @@ -143,7 +143,7 @@ index 6ebadc3b85b0f954305bc3a9187b996aa248a347..955ea03cddf77ae5bbd91ea74b851720 Local ValueOf() const; -@@ -10045,6 +10086,30 @@ template Value* Value::Cast(T* value) { +@@ -10103,6 +10144,30 @@ template Value* Value::Cast(T* value) { } @@ -175,10 +175,10 @@ index 6ebadc3b85b0f954305bc3a9187b996aa248a347..955ea03cddf77ae5bbd91ea74b851720 #ifdef V8_ENABLE_CHECKS CheckCast(value); diff --git a/src/api.cc b/src/api.cc -index f36e504161fed27392ef66ffc0ec87898958bf2d..0f2e56c05736d15bc637feb9fb53bdc7d892d0cc 100644 +index dd22b2a30b632fb9507eb2e2b95837dd9b8810db..b23105badb1ce643b0d3dcf6716776c53af4dfec 100644 --- a/src/api.cc +++ b/src/api.cc -@@ -2167,6 +2167,10 @@ int PrimitiveArray::Length() const { +@@ -2181,6 +2181,10 @@ int PrimitiveArray::Length() const { return array->length(); } @@ -189,7 +189,7 @@ index f36e504161fed27392ef66ffc0ec87898958bf2d..0f2e56c05736d15bc637feb9fb53bdc7 void PrimitiveArray::Set(Isolate* v8_isolate, int index, Local item) { i::Isolate* isolate = reinterpret_cast(v8_isolate); -@@ -2180,6 +2184,10 @@ void PrimitiveArray::Set(Isolate* v8_isolate, int index, +@@ -2194,6 +2198,10 @@ void PrimitiveArray::Set(Isolate* v8_isolate, int index, array->set(index, *i_item); } @@ -200,7 +200,7 @@ index f36e504161fed27392ef66ffc0ec87898958bf2d..0f2e56c05736d15bc637feb9fb53bdc7 Local PrimitiveArray::Get(Isolate* v8_isolate, int index) { i::Isolate* isolate = reinterpret_cast(v8_isolate); i::Handle array = Utils::OpenHandle(this); -@@ -2901,6 +2909,10 @@ void Message::PrintCurrentStackTrace(Isolate* isolate, FILE* out) { +@@ -2899,6 +2907,10 @@ void Message::PrintCurrentStackTrace(Isolate* isolate, FILE* out) { // --- S t a c k T r a c e --- @@ -211,7 +211,7 @@ index f36e504161fed27392ef66ffc0ec87898958bf2d..0f2e56c05736d15bc637feb9fb53bdc7 Local StackTrace::GetFrame(Isolate* v8_isolate, uint32_t index) const { i::Isolate* isolate = reinterpret_cast(v8_isolate); -@@ -3880,6 +3892,36 @@ void v8::RegExp::CheckCast(v8::Value* that) { +@@ -3858,6 +3870,36 @@ void v8::RegExp::CheckCast(v8::Value* that) { } @@ -248,7 +248,7 @@ index f36e504161fed27392ef66ffc0ec87898958bf2d..0f2e56c05736d15bc637feb9fb53bdc7 Maybe Value::BooleanValue(Local context) const { i::Isolate* isolate = reinterpret_cast(context->GetIsolate()); return Just(Utils::OpenHandle(this)->BooleanValue(isolate)); -@@ -3968,6 +4010,12 @@ MaybeLocal Value::ToArrayIndex(Local context) const { +@@ -3946,6 +3988,12 @@ MaybeLocal Value::ToArrayIndex(Local context) const { } @@ -261,7 +261,7 @@ index f36e504161fed27392ef66ffc0ec87898958bf2d..0f2e56c05736d15bc637feb9fb53bdc7 Maybe Value::Equals(Local context, Local that) const { i::Isolate* isolate = Utils::OpenHandle(*context)->GetIsolate(); auto self = Utils::OpenHandle(this); -@@ -5302,6 +5350,10 @@ bool String::ContainsOnlyOneByte() const { +@@ -5269,6 +5317,10 @@ bool String::ContainsOnlyOneByte() const { return helper.Check(*str); } @@ -272,9 +272,9 @@ index f36e504161fed27392ef66ffc0ec87898958bf2d..0f2e56c05736d15bc637feb9fb53bdc7 int String::Utf8Length(Isolate* isolate) const { i::Handle str = Utils::OpenHandle(this); str = i::String::Flatten(reinterpret_cast(isolate), str); -@@ -5525,6 +5577,14 @@ static bool RecursivelySerializeToUtf8(i::String current, - return true; +@@ -5421,6 +5473,14 @@ static int WriteUtf8Impl(i::Vector string, char* write_start, } + } // anonymous namespace + +int String::WriteUtf8(char* buffer, int capacity, @@ -287,7 +287,7 @@ index f36e504161fed27392ef66ffc0ec87898958bf2d..0f2e56c05736d15bc637feb9fb53bdc7 int String::WriteUtf8(Isolate* v8_isolate, char* buffer, int capacity, int* nchars_ref, int options) const { i::Handle str = Utils::OpenHandle(this); -@@ -5592,6 +5652,18 @@ static inline int WriteHelper(i::Isolate* isolate, const String* string, +@@ -5461,6 +5521,18 @@ static inline int WriteHelper(i::Isolate* isolate, const String* string, } @@ -306,7 +306,7 @@ index f36e504161fed27392ef66ffc0ec87898958bf2d..0f2e56c05736d15bc637feb9fb53bdc7 int String::WriteOneByte(Isolate* isolate, uint8_t* buffer, int start, int length, int options) const { return WriteHelper(reinterpret_cast(isolate), this, buffer, -@@ -6553,6 +6625,11 @@ MaybeLocal String::NewFromTwoByte(Isolate* isolate, +@@ -6430,6 +6502,11 @@ MaybeLocal String::NewFromTwoByte(Isolate* isolate, return result; } @@ -318,7 +318,7 @@ index f36e504161fed27392ef66ffc0ec87898958bf2d..0f2e56c05736d15bc637feb9fb53bdc7 Local v8::String::Concat(Isolate* v8_isolate, Local left, Local right) { i::Isolate* isolate = reinterpret_cast(v8_isolate); -@@ -6841,6 +6918,11 @@ bool v8::BooleanObject::ValueOf() const { +@@ -6713,6 +6790,11 @@ bool v8::BooleanObject::ValueOf() const { } @@ -330,8 +330,8 @@ index f36e504161fed27392ef66ffc0ec87898958bf2d..0f2e56c05736d15bc637feb9fb53bdc7 Local v8::StringObject::New(Isolate* v8_isolate, Local value) { i::Handle string = Utils::OpenHandle(*value); -@@ -9024,6 +9106,9 @@ bool MicrotasksScope::IsRunningMicrotasks(Isolate* v8Isolate) { - return isolate->IsRunningMicrotasks(); +@@ -8919,6 +9001,9 @@ bool MicrotasksScope::IsRunningMicrotasks(Isolate* v8Isolate) { + return isolate->default_microtask_queue()->IsRunningMicrotasks(); } +String::Utf8Value::Utf8Value(v8::Local obj) @@ -340,7 +340,7 @@ index f36e504161fed27392ef66ffc0ec87898958bf2d..0f2e56c05736d15bc637feb9fb53bdc7 String::Utf8Value::Utf8Value(v8::Isolate* isolate, v8::Local obj) : str_(nullptr), length_(0) { if (obj.IsEmpty()) return; -@@ -9043,6 +9128,9 @@ String::Utf8Value::~Utf8Value() { +@@ -8938,6 +9023,9 @@ String::Utf8Value::~Utf8Value() { i::DeleteArray(str_); } diff --git a/patches/common/v8/do_not_run_arm_arm64_mksnapshot_binaries.patch b/patches/common/v8/do_not_run_arm_arm64_mksnapshot_binaries.patch index 775e451569a8..2c57410da3d2 100644 --- a/patches/common/v8/do_not_run_arm_arm64_mksnapshot_binaries.patch +++ b/patches/common/v8/do_not_run_arm_arm64_mksnapshot_binaries.patch @@ -10,10 +10,10 @@ Electron does, so this patch makes sure that the build doesn't try to run the mksnapshot binary if it was built for arm or arm64. diff --git a/BUILD.gn b/BUILD.gn -index c564baea42f22d727990752be8b4ed086ef273f2..e3c8390c299e4c12e4ddba8402ccdb050e7bb6f1 100644 +index 698b6c827f7f3cd7dc6871156daf8467bc7ff605..022c55b3fe32bbde57e97f08ab2c374cc1ea047a 100644 --- a/BUILD.gn +++ b/BUILD.gn -@@ -1349,9 +1349,19 @@ if (v8_use_snapshot && v8_use_external_startup_data) { +@@ -1240,9 +1240,19 @@ if (v8_use_snapshot && v8_use_external_startup_data) { ] public_deps = [ ":natives_blob", diff --git a/patches/common/v8/export_platform.patch b/patches/common/v8/export_platform.patch index d790551c8833..7ea55c51c9ec 100644 --- a/patches/common/v8/export_platform.patch +++ b/patches/common/v8/export_platform.patch @@ -6,7 +6,7 @@ Subject: export_platform.patch v8::Platform::SystemClockTimeMillis must be exported so that node::NodePlatform can call it diff --git a/include/v8-platform.h b/include/v8-platform.h -index b9b0363a426de898c7db29a341f7179c45706f0a..48fba7921fd17eec79c569ab3c9173f084743218 100644 +index fc008979f69210d5e627ea735146f66c36703f43..4c097f2f06d766854c92fdbe487166e034d838b1 100644 --- a/include/v8-platform.h +++ b/include/v8-platform.h @@ -11,6 +11,7 @@ @@ -17,7 +17,7 @@ index b9b0363a426de898c7db29a341f7179c45706f0a..48fba7921fd17eec79c569ab3c9173f0 #include "v8config.h" // NOLINT(build/include) namespace v8 { -@@ -421,7 +422,7 @@ class Platform { +@@ -430,7 +431,7 @@ class Platform { * since epoch. Useful for implementing |CurrentClockTimeMillis| if * nothing special needed. */ diff --git a/patches/common/v8/expose_mksnapshot.patch b/patches/common/v8/expose_mksnapshot.patch index 724186b09386..94470df2bd55 100644 --- a/patches/common/v8/expose_mksnapshot.patch +++ b/patches/common/v8/expose_mksnapshot.patch @@ -6,10 +6,10 @@ Subject: expose_mksnapshot.patch Needed in order to build mksnapshot on arm. diff --git a/BUILD.gn b/BUILD.gn -index 9fe1e8d67a25955fea69be89e0bcc27cf5d8529d..b47a698a2f41f221290861c938c15a38e34d7b00 100644 +index fb3cfe848e97e0952829e39db5b56571e993d6a2..2f8a6c932efb66c5e273b9e9d2dc5887db8c6265 100644 --- a/BUILD.gn +++ b/BUILD.gn -@@ -3471,8 +3471,6 @@ if (current_toolchain == v8_generator_toolchain) { +@@ -3379,8 +3379,6 @@ if (current_toolchain == v8_generator_toolchain) { if (v8_use_snapshot && current_toolchain == v8_snapshot_toolchain) { v8_executable("mksnapshot") { diff --git a/patches/common/v8/reland_don_t_use_v8_initializers_code_in_v8_base.patch b/patches/common/v8/reland_don_t_use_v8_initializers_code_in_v8_base.patch deleted file mode 100644 index 8e3a8dcd71f3..000000000000 --- a/patches/common/v8/reland_don_t_use_v8_initializers_code_in_v8_base.patch +++ /dev/null @@ -1,719 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Alexander Timokhin -Date: Thu, 13 Dec 2018 12:46:59 +0300 -Subject: Reland "Don't use |v8_initializers| code in |v8_base|" - -This is a reland of 2e36e9ea1ef3e332bc9b2d620c6d6ceb054f58a6 - -Was reverted because of v8_presubmit.py issue in -https://chromium-review.googlesource.com/c/v8/v8/+/1374292 - -Original change's description: -> Don't use |v8_initializers| code in |v8_base| -> -> Removing |CodeStubAssembler| from |v8_base| source list (see -> https://chromium-review.googlesource.com/c/v8/v8/+/1346329) leads to -> linkage problems with some build configurations because it was explicitly -> and implicitly included in |v8_base| code. -> -> This CL decouple this code and fixes problems. -> -> Bug: v8:7777 -> Change-Id: I58de5c62914bc77645ed6cc9114409890bc13189 -> Reviewed-on: https://chromium-review.googlesource.com/c/1372067 -> Reviewed-by: Jakob Kummerow -> Reviewed-by: Benedikt Meurer -> Reviewed-by: Jakob Gruber -> Commit-Queue: Jakob Gruber -> Cr-Commit-Position: refs/heads/master@{#58200} - -Bug: v8:7777 -Change-Id: Iaa00e73c7dbd8c413fbf15a17709aa12eda9a706 -Reviewed-on: https://chromium-review.googlesource.com/c/1375654 -Reviewed-by: Benedikt Meurer -Reviewed-by: Jakob Gruber -Commit-Queue: Jakob Gruber -Cr-Commit-Position: refs/heads/master@{#58209} - -diff --git a/BUILD.gn b/BUILD.gn -index e3c8390c299e4c12e4ddba8402ccdb050e7bb6f1..06c9a98f6888eff6c0794e0b83682e04abdbf1d7 100644 ---- a/BUILD.gn -+++ b/BUILD.gn -@@ -1722,6 +1722,7 @@ v8_source_set("v8_base") { - "src/builtins/builtins-number.cc", - "src/builtins/builtins-object.cc", - "src/builtins/builtins-promise.cc", -+ "src/builtins/builtins-promise.h", - "src/builtins/builtins-reflect.cc", - "src/builtins/builtins-regexp.cc", - "src/builtins/builtins-sharedarraybuffer.cc", -diff --git a/src/builtins/builtins-date.cc b/src/builtins/builtins-date.cc -index b2e054d6a2efe039c3eb622467adfdff72f582f1..8635eefd21cba5065f9c60e266575f983449dd0f 100644 ---- a/src/builtins/builtins-date.cc -+++ b/src/builtins/builtins-date.cc -@@ -5,7 +5,6 @@ - #include "src/builtins/builtins-utils-inl.h" - #include "src/builtins/builtins.h" - #include "src/code-factory.h" --#include "src/code-stub-assembler.h" - #include "src/conversions.h" - #include "src/counters.h" - #include "src/date.h" -diff --git a/src/builtins/builtins-object.cc b/src/builtins/builtins-object.cc -index 5ab929a7a19edbf270f0dff518323003c3103baf..2b55abbc127c527ebd423e48fed23d51613a8302 100644 ---- a/src/builtins/builtins-object.cc -+++ b/src/builtins/builtins-object.cc -@@ -5,7 +5,6 @@ - #include "src/builtins/builtins-utils-inl.h" - #include "src/builtins/builtins.h" - #include "src/code-factory.h" --#include "src/code-stub-assembler.h" - #include "src/counters.h" - #include "src/keys.h" - #include "src/lookup.h" -diff --git a/src/builtins/builtins-promise-gen.cc b/src/builtins/builtins-promise-gen.cc -index 22f643e36df8addfcf65c98cc5004e514307f9d3..051b9d8bf82df0713df05c73e2c6677da74bd7ed 100644 ---- a/src/builtins/builtins-promise-gen.cc -+++ b/src/builtins/builtins-promise-gen.cc -@@ -6,6 +6,7 @@ - - #include "src/builtins/builtins-constructor-gen.h" - #include "src/builtins/builtins-iterator-gen.h" -+#include "src/builtins/builtins-promise.h" - #include "src/builtins/builtins-utils-gen.h" - #include "src/builtins/builtins.h" - #include "src/code-factory.h" -@@ -210,14 +211,17 @@ Node* PromiseBuiltinsAssembler::CreatePromiseAllResolveElementContext( - TNode values_array = AllocateJSArray( - PACKED_ELEMENTS, array_map, IntPtrConstant(0), SmiConstant(0)); - -- Node* const context = -- CreatePromiseContext(native_context, kPromiseAllResolveElementLength); -+ Node* const context = CreatePromiseContext( -+ native_context, PromiseBuiltins::kPromiseAllResolveElementLength); - StoreContextElementNoWriteBarrier( -- context, kPromiseAllResolveElementRemainingSlot, SmiConstant(1)); -+ context, PromiseBuiltins::kPromiseAllResolveElementRemainingSlot, -+ SmiConstant(1)); - StoreContextElementNoWriteBarrier( -- context, kPromiseAllResolveElementCapabilitySlot, promise_capability); -+ context, PromiseBuiltins::kPromiseAllResolveElementCapabilitySlot, -+ promise_capability); - StoreContextElementNoWriteBarrier( -- context, kPromiseAllResolveElementValuesArraySlot, values_array); -+ context, PromiseBuiltins::kPromiseAllResolveElementValuesArraySlot, -+ values_array); - - return context; - } -@@ -245,20 +249,22 @@ Node* PromiseBuiltinsAssembler::CreatePromiseAllResolveElementFunction( - - Node* PromiseBuiltinsAssembler::CreatePromiseResolvingFunctionsContext( - Node* promise, Node* debug_event, Node* native_context) { -- Node* const context = -- CreatePromiseContext(native_context, kPromiseContextLength); -- StoreContextElementNoWriteBarrier(context, kPromiseSlot, promise); -- StoreContextElementNoWriteBarrier(context, kAlreadyResolvedSlot, -- FalseConstant()); -- StoreContextElementNoWriteBarrier(context, kDebugEventSlot, debug_event); -+ Node* const context = CreatePromiseContext( -+ native_context, PromiseBuiltins::kPromiseContextLength); -+ StoreContextElementNoWriteBarrier(context, PromiseBuiltins::kPromiseSlot, -+ promise); -+ StoreContextElementNoWriteBarrier( -+ context, PromiseBuiltins::kAlreadyResolvedSlot, FalseConstant()); -+ StoreContextElementNoWriteBarrier(context, PromiseBuiltins::kDebugEventSlot, -+ debug_event); - return context; - } - - Node* PromiseBuiltinsAssembler::CreatePromiseGetCapabilitiesExecutorContext( - Node* promise_capability, Node* native_context) { -- int kContextLength = kCapabilitiesContextLength; -+ int kContextLength = PromiseBuiltins::kCapabilitiesContextLength; - Node* context = CreatePromiseContext(native_context, kContextLength); -- StoreContextElementNoWriteBarrier(context, kCapabilitySlot, -+ StoreContextElementNoWriteBarrier(context, PromiseBuiltins::kCapabilitySlot, - promise_capability); - return context; - } -@@ -750,22 +756,24 @@ TF_BUILTIN(PromiseCapabilityDefaultReject, PromiseBuiltinsAssembler) { - Node* const context = Parameter(Descriptor::kContext); - - // 2. Let promise be F.[[Promise]]. -- Node* const promise = LoadContextElement(context, kPromiseSlot); -+ Node* const promise = -+ LoadContextElement(context, PromiseBuiltins::kPromiseSlot); - - // 3. Let alreadyResolved be F.[[AlreadyResolved]]. - Label if_already_resolved(this, Label::kDeferred); - Node* const already_resolved = -- LoadContextElement(context, kAlreadyResolvedSlot); -+ LoadContextElement(context, PromiseBuiltins::kAlreadyResolvedSlot); - - // 4. If alreadyResolved.[[Value]] is true, return undefined. - GotoIf(IsTrue(already_resolved), &if_already_resolved); - - // 5. Set alreadyResolved.[[Value]] to true. -- StoreContextElementNoWriteBarrier(context, kAlreadyResolvedSlot, -- TrueConstant()); -+ StoreContextElementNoWriteBarrier( -+ context, PromiseBuiltins::kAlreadyResolvedSlot, TrueConstant()); - - // 6. Return RejectPromise(promise, reason). -- Node* const debug_event = LoadContextElement(context, kDebugEventSlot); -+ Node* const debug_event = -+ LoadContextElement(context, PromiseBuiltins::kDebugEventSlot); - Return(CallBuiltin(Builtins::kRejectPromise, context, promise, reason, - debug_event)); - -@@ -782,19 +790,20 @@ TF_BUILTIN(PromiseCapabilityDefaultResolve, PromiseBuiltinsAssembler) { - Node* const context = Parameter(Descriptor::kContext); - - // 2. Let promise be F.[[Promise]]. -- Node* const promise = LoadContextElement(context, kPromiseSlot); -+ Node* const promise = -+ LoadContextElement(context, PromiseBuiltins::kPromiseSlot); - - // 3. Let alreadyResolved be F.[[AlreadyResolved]]. - Label if_already_resolved(this, Label::kDeferred); - Node* const already_resolved = -- LoadContextElement(context, kAlreadyResolvedSlot); -+ LoadContextElement(context, PromiseBuiltins::kAlreadyResolvedSlot); - - // 4. If alreadyResolved.[[Value]] is true, return undefined. - GotoIf(IsTrue(already_resolved), &if_already_resolved); - - // 5. Set alreadyResolved.[[Value]] to true. -- StoreContextElementNoWriteBarrier(context, kAlreadyResolvedSlot, -- TrueConstant()); -+ StoreContextElementNoWriteBarrier( -+ context, PromiseBuiltins::kAlreadyResolvedSlot, TrueConstant()); - - // The rest of the logic (and the catch prediction) is - // encapsulated in the dedicated ResolvePromise builtin. -@@ -1396,7 +1405,8 @@ TF_BUILTIN(PromiseGetCapabilitiesExecutor, PromiseBuiltinsAssembler) { - Node* const reject = Parameter(Descriptor::kReject); - Node* const context = Parameter(Descriptor::kContext); - -- Node* const capability = LoadContextElement(context, kCapabilitySlot); -+ Node* const capability = -+ LoadContextElement(context, PromiseBuiltins::kCapabilitySlot); - - Label if_alreadyinvoked(this, Label::kDeferred); - GotoIfNot(IsUndefined( -@@ -1464,12 +1474,12 @@ TF_BUILTIN(PromiseReject, PromiseBuiltinsAssembler) { - - std::pair PromiseBuiltinsAssembler::CreatePromiseFinallyFunctions( - Node* on_finally, Node* constructor, Node* native_context) { -- Node* const promise_context = -- CreatePromiseContext(native_context, kPromiseFinallyContextLength); -- StoreContextElementNoWriteBarrier(promise_context, kOnFinallySlot, -- on_finally); -- StoreContextElementNoWriteBarrier(promise_context, kConstructorSlot, -- constructor); -+ Node* const promise_context = CreatePromiseContext( -+ native_context, PromiseBuiltins::kPromiseFinallyContextLength); -+ StoreContextElementNoWriteBarrier( -+ promise_context, PromiseBuiltins::kOnFinallySlot, on_finally); -+ StoreContextElementNoWriteBarrier( -+ promise_context, PromiseBuiltins::kConstructorSlot, constructor); - Node* const map = LoadContextElement( - native_context, Context::STRICT_FUNCTION_WITHOUT_PROTOTYPE_MAP_INDEX); - Node* const then_finally_info = LoadContextElement( -@@ -1486,15 +1496,16 @@ std::pair PromiseBuiltinsAssembler::CreatePromiseFinallyFunctions( - TF_BUILTIN(PromiseValueThunkFinally, PromiseBuiltinsAssembler) { - Node* const context = Parameter(Descriptor::kContext); - -- Node* const value = LoadContextElement(context, kValueSlot); -+ Node* const value = LoadContextElement(context, PromiseBuiltins::kValueSlot); - Return(value); - } - - Node* PromiseBuiltinsAssembler::CreateValueThunkFunction(Node* value, - Node* native_context) { - Node* const value_thunk_context = CreatePromiseContext( -- native_context, kPromiseValueThunkOrReasonContextLength); -- StoreContextElementNoWriteBarrier(value_thunk_context, kValueSlot, value); -+ native_context, PromiseBuiltins::kPromiseValueThunkOrReasonContextLength); -+ StoreContextElementNoWriteBarrier(value_thunk_context, -+ PromiseBuiltins::kValueSlot, value); - Node* const map = LoadContextElement( - native_context, Context::STRICT_FUNCTION_WITHOUT_PROTOTYPE_MAP_INDEX); - Node* const value_thunk_info = LoadContextElement( -@@ -1511,7 +1522,8 @@ TF_BUILTIN(PromiseThenFinally, PromiseBuiltinsAssembler) { - Node* const context = Parameter(Descriptor::kContext); - - // 1. Let onFinally be F.[[OnFinally]]. -- Node* const on_finally = LoadContextElement(context, kOnFinallySlot); -+ Node* const on_finally = -+ LoadContextElement(context, PromiseBuiltins::kOnFinallySlot); - - // 2. Assert: IsCallable(onFinally) is true. - CSA_ASSERT(this, IsCallable(on_finally)); -@@ -1522,7 +1534,8 @@ TF_BUILTIN(PromiseThenFinally, PromiseBuiltinsAssembler) { - context, on_finally, UndefinedConstant()); - - // 4. Let C be F.[[Constructor]]. -- Node* const constructor = LoadContextElement(context, kConstructorSlot); -+ Node* const constructor = -+ LoadContextElement(context, PromiseBuiltins::kConstructorSlot); - - // 5. Assert: IsConstructor(C) is true. - CSA_ASSERT(this, IsConstructor(constructor)); -@@ -1542,7 +1555,7 @@ TF_BUILTIN(PromiseThenFinally, PromiseBuiltinsAssembler) { - TF_BUILTIN(PromiseThrowerFinally, PromiseBuiltinsAssembler) { - Node* const context = Parameter(Descriptor::kContext); - -- Node* const reason = LoadContextElement(context, kValueSlot); -+ Node* const reason = LoadContextElement(context, PromiseBuiltins::kValueSlot); - CallRuntime(Runtime::kThrow, context, reason); - Unreachable(); - } -@@ -1550,8 +1563,9 @@ TF_BUILTIN(PromiseThrowerFinally, PromiseBuiltinsAssembler) { - Node* PromiseBuiltinsAssembler::CreateThrowerFunction(Node* reason, - Node* native_context) { - Node* const thrower_context = CreatePromiseContext( -- native_context, kPromiseValueThunkOrReasonContextLength); -- StoreContextElementNoWriteBarrier(thrower_context, kValueSlot, reason); -+ native_context, PromiseBuiltins::kPromiseValueThunkOrReasonContextLength); -+ StoreContextElementNoWriteBarrier(thrower_context, -+ PromiseBuiltins::kValueSlot, reason); - Node* const map = LoadContextElement( - native_context, Context::STRICT_FUNCTION_WITHOUT_PROTOTYPE_MAP_INDEX); - Node* const thrower_info = LoadContextElement( -@@ -1568,7 +1582,8 @@ TF_BUILTIN(PromiseCatchFinally, PromiseBuiltinsAssembler) { - Node* const context = Parameter(Descriptor::kContext); - - // 1. Let onFinally be F.[[OnFinally]]. -- Node* const on_finally = LoadContextElement(context, kOnFinallySlot); -+ Node* const on_finally = -+ LoadContextElement(context, PromiseBuiltins::kOnFinallySlot); - - // 2. Assert: IsCallable(onFinally) is true. - CSA_ASSERT(this, IsCallable(on_finally)); -@@ -1579,7 +1594,8 @@ TF_BUILTIN(PromiseCatchFinally, PromiseBuiltinsAssembler) { - context, on_finally, UndefinedConstant()); - - // 4. Let C be F.[[Constructor]]. -- Node* const constructor = LoadContextElement(context, kConstructorSlot); -+ Node* const constructor = -+ LoadContextElement(context, PromiseBuiltins::kConstructorSlot); - - // 5. Assert: IsConstructor(C) is true. - CSA_ASSERT(this, IsConstructor(constructor)); -@@ -1908,9 +1924,11 @@ Node* PromiseBuiltinsAssembler::PerformPromiseAll( - // Set remainingElementsCount.[[Value]] to - // remainingElementsCount.[[Value]] + 1. - TNode const remaining_elements_count = CAST(LoadContextElement( -- resolve_element_context, kPromiseAllResolveElementRemainingSlot)); -+ resolve_element_context, -+ PromiseBuiltins::kPromiseAllResolveElementRemainingSlot)); - StoreContextElementNoWriteBarrier( -- resolve_element_context, kPromiseAllResolveElementRemainingSlot, -+ resolve_element_context, -+ PromiseBuiltins::kPromiseAllResolveElementRemainingSlot, - SmiAdd(remaining_elements_count, SmiConstant(1))); - - // Let resolveElement be CreateBuiltinFunction(steps, -@@ -2027,11 +2045,13 @@ Node* PromiseBuiltinsAssembler::PerformPromiseAll( - // Set remainingElementsCount.[[Value]] to - // remainingElementsCount.[[Value]] - 1. - TNode remaining_elements_count = CAST(LoadContextElement( -- resolve_element_context, kPromiseAllResolveElementRemainingSlot)); -+ resolve_element_context, -+ PromiseBuiltins::kPromiseAllResolveElementRemainingSlot)); - remaining_elements_count = SmiSub(remaining_elements_count, SmiConstant(1)); -- StoreContextElementNoWriteBarrier(resolve_element_context, -- kPromiseAllResolveElementRemainingSlot, -- remaining_elements_count); -+ StoreContextElementNoWriteBarrier( -+ resolve_element_context, -+ PromiseBuiltins::kPromiseAllResolveElementRemainingSlot, -+ remaining_elements_count); - GotoIf(SmiEqual(remaining_elements_count, SmiConstant(0)), - &resolve_promise); - -@@ -2040,7 +2060,8 @@ Node* PromiseBuiltinsAssembler::PerformPromiseAll( - // fancy Thenable that calls the resolve callback immediately, so we need - // to handle that correctly here. - Node* const values_array = LoadContextElement( -- resolve_element_context, kPromiseAllResolveElementValuesArraySlot); -+ resolve_element_context, -+ PromiseBuiltins::kPromiseAllResolveElementValuesArraySlot); - Node* const old_elements = LoadElements(values_array); - TNode const old_capacity = LoadFixedArrayBaseLength(old_elements); - TNode const new_capacity = var_index.value(); -@@ -2063,7 +2084,8 @@ Node* PromiseBuiltinsAssembler::PerformPromiseAll( - Node* const resolve = - LoadObjectField(capability, PromiseCapability::kResolveOffset); - Node* const values_array = LoadContextElement( -- resolve_element_context, kPromiseAllResolveElementValuesArraySlot); -+ resolve_element_context, -+ PromiseBuiltins::kPromiseAllResolveElementValuesArraySlot); - Node* const resolve_call = CallJS( - CodeFactory::Call(isolate(), ConvertReceiverMode::kNullOrUndefined), - native_context, resolve, UndefinedConstant(), values_array); -@@ -2146,9 +2168,10 @@ TF_BUILTIN(PromiseAllResolveElementClosure, PromiseBuiltinsAssembler) { - // first time, in which case we make it point to the native context here - // to mark this resolve element closure as done. - GotoIf(IsNativeContext(context), &already_called); -- CSA_ASSERT(this, -- SmiEqual(LoadObjectField(context, Context::kLengthOffset), -- SmiConstant(kPromiseAllResolveElementLength))); -+ CSA_ASSERT( -+ this, -+ SmiEqual(LoadObjectField(context, Context::kLengthOffset), -+ SmiConstant(PromiseBuiltins::kPromiseAllResolveElementLength))); - TNode native_context = LoadNativeContext(context); - StoreObjectField(function, JSFunction::kContextOffset, native_context); - -@@ -2161,8 +2184,8 @@ TF_BUILTIN(PromiseAllResolveElementClosure, PromiseBuiltinsAssembler) { - TNode index = IntPtrSub(identity_hash, IntPtrConstant(1)); - - // Check if we need to grow the [[ValuesArray]] to store {value} at {index}. -- TNode values_array = CAST( -- LoadContextElement(context, kPromiseAllResolveElementValuesArraySlot)); -+ TNode values_array = CAST(LoadContextElement( -+ context, PromiseBuiltins::kPromiseAllResolveElementValuesArraySlot)); - TNode elements = CAST(LoadElements(values_array)); - TNode values_length = - LoadAndUntagObjectField(values_array, JSArray::kLengthOffset); -@@ -2221,17 +2244,18 @@ TF_BUILTIN(PromiseAllResolveElementClosure, PromiseBuiltinsAssembler) { - } - - BIND(&done); -- TNode remaining_elements_count = -- CAST(LoadContextElement(context, kPromiseAllResolveElementRemainingSlot)); -+ TNode remaining_elements_count = CAST(LoadContextElement( -+ context, PromiseBuiltins::kPromiseAllResolveElementRemainingSlot)); - remaining_elements_count = SmiSub(remaining_elements_count, SmiConstant(1)); -- StoreContextElement(context, kPromiseAllResolveElementRemainingSlot, -+ StoreContextElement(context, -+ PromiseBuiltins::kPromiseAllResolveElementRemainingSlot, - remaining_elements_count); - GotoIf(SmiEqual(remaining_elements_count, SmiConstant(0)), &resolve_promise); - Return(UndefinedConstant()); - - BIND(&resolve_promise); -- TNode capability = CAST( -- LoadContextElement(context, kPromiseAllResolveElementCapabilitySlot)); -+ TNode capability = CAST(LoadContextElement( -+ context, PromiseBuiltins::kPromiseAllResolveElementCapabilitySlot)); - TNode resolve = - LoadObjectField(capability, PromiseCapability::kResolveOffset); - CallJS(CodeFactory::Call(isolate(), ConvertReceiverMode::kNullOrUndefined), -diff --git a/src/builtins/builtins-promise-gen.h b/src/builtins/builtins-promise-gen.h -index 435f1adc87b2393c0c7a4142bb946f50940d256e..8edc2331a51ad08f19b9e470a5e76a4d78cd69f5 100644 ---- a/src/builtins/builtins-promise-gen.h -+++ b/src/builtins/builtins-promise-gen.h -@@ -6,7 +6,6 @@ - #define V8_BUILTINS_BUILTINS_PROMISE_GEN_H_ - - #include "src/code-stub-assembler.h" --#include "src/contexts.h" - #include "src/objects/promise.h" - #include "torque-generated/builtins-base-from-dsl-gen.h" - #include "torque-generated/builtins-iterator-from-dsl-gen.h" -@@ -18,59 +17,6 @@ typedef compiler::CodeAssemblerState CodeAssemblerState; - - class PromiseBuiltinsAssembler : public CodeStubAssembler { - public: -- enum PromiseResolvingFunctionContextSlot { -- // The promise which resolve/reject callbacks fulfill. -- kPromiseSlot = Context::MIN_CONTEXT_SLOTS, -- -- // Whether the callback was already invoked. -- kAlreadyResolvedSlot, -- -- // Whether to trigger a debug event or not. Used in catch -- // prediction. -- kDebugEventSlot, -- kPromiseContextLength, -- }; -- -- // TODO(bmeurer): Move this to a proper context map in contexts.h? -- // Similar to the AwaitContext that we introduced for await closures. -- enum PromiseAllResolveElementContextSlots { -- // Remaining elements count -- kPromiseAllResolveElementRemainingSlot = Context::MIN_CONTEXT_SLOTS, -- -- // Promise capability from Promise.all -- kPromiseAllResolveElementCapabilitySlot, -- -- // Values array from Promise.all -- kPromiseAllResolveElementValuesArraySlot, -- -- kPromiseAllResolveElementLength -- }; -- -- enum FunctionContextSlot { -- kCapabilitySlot = Context::MIN_CONTEXT_SLOTS, -- -- kCapabilitiesContextLength, -- }; -- -- // This is used by the Promise.prototype.finally builtin to store -- // onFinally callback and the Promise constructor. -- // TODO(gsathya): For native promises we can create a variant of -- // this without extra space for the constructor to save memory. -- enum PromiseFinallyContextSlot { -- kOnFinallySlot = Context::MIN_CONTEXT_SLOTS, -- kConstructorSlot, -- -- kPromiseFinallyContextLength, -- }; -- -- // This is used by the ThenFinally and CatchFinally builtins to -- // store the value to return or reason to throw. -- enum PromiseValueThunkOrReasonContextSlot { -- kValueSlot = Context::MIN_CONTEXT_SLOTS, -- -- kPromiseValueThunkOrReasonContextLength, -- }; -- - explicit PromiseBuiltinsAssembler(compiler::CodeAssemblerState* state) - : CodeStubAssembler(state) {} - // These allocate and initialize a promise with pending state and -diff --git a/src/builtins/builtins-promise.cc b/src/builtins/builtins-promise.cc -index 88d54b26d0295e25ffb57f154dcfeb353e46d04f..0f18d8fb459b9d256648870706118a751012b01a 100644 ---- a/src/builtins/builtins-promise.cc -+++ b/src/builtins/builtins-promise.cc -@@ -2,6 +2,8 @@ - // Use of this source code is governed by a BSD-style license that can be - // found in the LICENSE file. - -+#include "src/builtins/builtins-promise.h" -+ - #include "src/builtins/builtins-utils-inl.h" - #include "src/builtins/builtins.h" - #include "src/counters.h" -diff --git a/src/builtins/builtins-promise.h b/src/builtins/builtins-promise.h -new file mode 100644 -index 0000000000000000000000000000000000000000..66545feafed2099992a0fa57aada74298e634994 ---- /dev/null -+++ b/src/builtins/builtins-promise.h -@@ -0,0 +1,75 @@ -+// 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. -+ -+#ifndef V8_BUILTINS_BUILTINS_PROMISE_H_ -+#define V8_BUILTINS_BUILTINS_PROMISE_H_ -+ -+#include "src/contexts.h" -+ -+namespace v8 { -+namespace internal { -+ -+class PromiseBuiltins { -+ public: -+ enum PromiseResolvingFunctionContextSlot { -+ // The promise which resolve/reject callbacks fulfill. -+ kPromiseSlot = Context::MIN_CONTEXT_SLOTS, -+ -+ // Whether the callback was already invoked. -+ kAlreadyResolvedSlot, -+ -+ // Whether to trigger a debug event or not. Used in catch -+ // prediction. -+ kDebugEventSlot, -+ kPromiseContextLength, -+ }; -+ -+ // TODO(bmeurer): Move this to a proper context map in contexts.h? -+ // Similar to the AwaitContext that we introduced for await closures. -+ enum PromiseAllResolveElementContextSlots { -+ // Remaining elements count -+ kPromiseAllResolveElementRemainingSlot = Context::MIN_CONTEXT_SLOTS, -+ -+ // Promise capability from Promise.all -+ kPromiseAllResolveElementCapabilitySlot, -+ -+ // Values array from Promise.all -+ kPromiseAllResolveElementValuesArraySlot, -+ -+ kPromiseAllResolveElementLength -+ }; -+ -+ enum FunctionContextSlot { -+ kCapabilitySlot = Context::MIN_CONTEXT_SLOTS, -+ -+ kCapabilitiesContextLength, -+ }; -+ -+ // This is used by the Promise.prototype.finally builtin to store -+ // onFinally callback and the Promise constructor. -+ // TODO(gsathya): For native promises we can create a variant of -+ // this without extra space for the constructor to save memory. -+ enum PromiseFinallyContextSlot { -+ kOnFinallySlot = Context::MIN_CONTEXT_SLOTS, -+ kConstructorSlot, -+ -+ kPromiseFinallyContextLength, -+ }; -+ -+ // This is used by the ThenFinally and CatchFinally builtins to -+ // store the value to return or reason to throw. -+ enum PromiseValueThunkOrReasonContextSlot { -+ kValueSlot = Context::MIN_CONTEXT_SLOTS, -+ -+ kPromiseValueThunkOrReasonContextLength, -+ }; -+ -+ private: -+ DISALLOW_IMPLICIT_CONSTRUCTORS(PromiseBuiltins); -+}; -+ -+} // namespace internal -+} // namespace v8 -+ -+#endif // V8_BUILTINS_BUILTINS_PROMISE_H_ -diff --git a/src/compiler/js-call-reducer.cc b/src/compiler/js-call-reducer.cc -index 131b50b53e67d9cdb47e20ed570875cda84c0ba7..d5985d2cdc5a50a2f38012cef5291f6b6dde0154 100644 ---- a/src/compiler/js-call-reducer.cc -+++ b/src/compiler/js-call-reducer.cc -@@ -5,7 +5,7 @@ - #include "src/compiler/js-call-reducer.h" - - #include "src/api-inl.h" --#include "src/builtins/builtins-promise-gen.h" -+#include "src/builtins/builtins-promise.h" - #include "src/builtins/builtins-utils.h" - #include "src/code-factory.h" - #include "src/code-stubs.h" -@@ -5607,21 +5607,20 @@ Reduction JSCallReducer::ReducePromiseConstructor(Node* node) { - Node* promise_context = effect = graph()->NewNode( - javascript()->CreateFunctionContext( - handle(native_context().object()->scope_info(), isolate()), -- PromiseBuiltinsAssembler::kPromiseContextLength - -- Context::MIN_CONTEXT_SLOTS, -+ PromiseBuiltins::kPromiseContextLength - Context::MIN_CONTEXT_SLOTS, - FUNCTION_SCOPE), - context, effect, control); -- effect = -- graph()->NewNode(simplified()->StoreField(AccessBuilder::ForContextSlot( -- PromiseBuiltinsAssembler::kPromiseSlot)), -- promise_context, promise, effect, control); - effect = graph()->NewNode( -- simplified()->StoreField(AccessBuilder::ForContextSlot( -- PromiseBuiltinsAssembler::kAlreadyResolvedSlot)), -+ simplified()->StoreField( -+ AccessBuilder::ForContextSlot(PromiseBuiltins::kPromiseSlot)), -+ promise_context, promise, effect, control); -+ effect = graph()->NewNode( -+ simplified()->StoreField( -+ AccessBuilder::ForContextSlot(PromiseBuiltins::kAlreadyResolvedSlot)), - promise_context, jsgraph()->FalseConstant(), effect, control); - effect = graph()->NewNode( -- simplified()->StoreField(AccessBuilder::ForContextSlot( -- PromiseBuiltinsAssembler::kDebugEventSlot)), -+ simplified()->StoreField( -+ AccessBuilder::ForContextSlot(PromiseBuiltins::kDebugEventSlot)), - promise_context, jsgraph()->TrueConstant(), effect, control); - - // Allocate the closure for the resolve case. -@@ -5927,18 +5926,18 @@ Reduction JSCallReducer::ReducePromisePrototypeFinally(Node* node) { - context = etrue = graph()->NewNode( - javascript()->CreateFunctionContext( - handle(native_context().object()->scope_info(), isolate()), -- PromiseBuiltinsAssembler::kPromiseFinallyContextLength - -+ PromiseBuiltins::kPromiseFinallyContextLength - - Context::MIN_CONTEXT_SLOTS, - FUNCTION_SCOPE), - context, etrue, if_true); -- etrue = -- graph()->NewNode(simplified()->StoreField(AccessBuilder::ForContextSlot( -- PromiseBuiltinsAssembler::kOnFinallySlot)), -- context, on_finally, etrue, if_true); -- etrue = -- graph()->NewNode(simplified()->StoreField(AccessBuilder::ForContextSlot( -- PromiseBuiltinsAssembler::kConstructorSlot)), -- context, constructor, etrue, if_true); -+ etrue = graph()->NewNode( -+ simplified()->StoreField( -+ AccessBuilder::ForContextSlot(PromiseBuiltins::kOnFinallySlot)), -+ context, on_finally, etrue, if_true); -+ etrue = graph()->NewNode( -+ simplified()->StoreField( -+ AccessBuilder::ForContextSlot(PromiseBuiltins::kConstructorSlot)), -+ context, constructor, etrue, if_true); - - // Allocate the closure for the reject case. - SharedFunctionInfoRef catch_finally = -diff --git a/src/isolate.cc b/src/isolate.cc -index a3e93d0da3dd8054a04ea15edc2c7511972f7136..44dc67d22452e4153d44edc81f26c13eb96d2920 100644 ---- a/src/isolate.cc -+++ b/src/isolate.cc -@@ -22,7 +22,7 @@ - #include "src/base/sys-info.h" - #include "src/base/utils/random-number-generator.h" - #include "src/bootstrapper.h" --#include "src/builtins/builtins-promise-gen.h" -+#include "src/builtins/builtins-promise.h" - #include "src/builtins/constants-table-builder.h" - #include "src/cancelable-task.h" - #include "src/code-stubs.h" -@@ -774,7 +774,7 @@ void CaptureAsyncStackTrace(Isolate* isolate, Handle promise, - // find the promise capability that's being resolved when all - // the concurrent promises resolve. - int const index = -- PromiseBuiltinsAssembler::kPromiseAllResolveElementCapabilitySlot; -+ PromiseBuiltins::kPromiseAllResolveElementCapabilitySlot; - Handle capability( - PromiseCapability::cast(context->get(index)), isolate); - if (!capability->promise()->IsJSPromise()) return; -diff --git a/test/cctest/test-code-stub-assembler.cc b/test/cctest/test-code-stub-assembler.cc -index 6db2eed1458bd0f07ae6774401e53a3f2d23b7ce..ab90d1a357fd141441cf1a89323a5dc7f332a882 100644 ---- a/test/cctest/test-code-stub-assembler.cc -+++ b/test/cctest/test-code-stub-assembler.cc -@@ -7,6 +7,7 @@ - #include "src/api-inl.h" - #include "src/base/utils/random-number-generator.h" - #include "src/builtins/builtins-promise-gen.h" -+#include "src/builtins/builtins-promise.h" - #include "src/builtins/builtins-string-gen.h" - #include "src/char-predicates.h" - #include "src/code-factory.h" -@@ -2360,9 +2361,9 @@ TEST(CreatePromiseResolvingFunctionsContext) { - CHECK_EQ(isolate->native_context()->scope_info(), context_js->scope_info()); - CHECK_EQ(ReadOnlyRoots(isolate).the_hole_value(), context_js->extension()); - CHECK_EQ(*isolate->native_context(), context_js->native_context()); -- CHECK(context_js->get(PromiseBuiltinsAssembler::kPromiseSlot)->IsJSPromise()); -+ CHECK(context_js->get(PromiseBuiltins::kPromiseSlot)->IsJSPromise()); - CHECK_EQ(ReadOnlyRoots(isolate).false_value(), -- context_js->get(PromiseBuiltinsAssembler::kDebugEventSlot)); -+ context_js->get(PromiseBuiltins::kDebugEventSlot)); - } - - TEST(CreatePromiseResolvingFunctions) { -@@ -2520,13 +2521,12 @@ TEST(CreatePromiseGetCapabilitiesExecutorContext) { - ft.Call(isolate->factory()->undefined_value()).ToHandleChecked(); - CHECK(result_obj->IsContext()); - Handle context_js = Handle::cast(result_obj); -- CHECK_EQ(PromiseBuiltinsAssembler::kCapabilitiesContextLength, -- context_js->length()); -+ CHECK_EQ(PromiseBuiltins::kCapabilitiesContextLength, context_js->length()); - CHECK_EQ(isolate->native_context()->scope_info(), context_js->scope_info()); - CHECK_EQ(ReadOnlyRoots(isolate).the_hole_value(), context_js->extension()); - CHECK_EQ(*isolate->native_context(), context_js->native_context()); -- CHECK(context_js->get(PromiseBuiltinsAssembler::kCapabilitySlot) -- ->IsPromiseCapability()); -+ CHECK( -+ context_js->get(PromiseBuiltins::kCapabilitySlot)->IsPromiseCapability()); - } - - TEST(NewPromiseCapability) { -@@ -2573,10 +2573,8 @@ TEST(NewPromiseCapability) { - CHECK_EQ(isolate->native_context()->scope_info(), context->scope_info()); - CHECK_EQ(ReadOnlyRoots(isolate).the_hole_value(), context->extension()); - CHECK_EQ(*isolate->native_context(), context->native_context()); -- CHECK_EQ(PromiseBuiltinsAssembler::kPromiseContextLength, -- context->length()); -- CHECK_EQ(context->get(PromiseBuiltinsAssembler::kPromiseSlot), -- result->promise()); -+ CHECK_EQ(PromiseBuiltins::kPromiseContextLength, context->length()); -+ CHECK_EQ(context->get(PromiseBuiltins::kPromiseSlot), result->promise()); - } - } -