Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
d3618b2
benchmark: adjust config for deepEqual object
RafaelGSS Oct 11, 2024
d9fde2c
meta: bump step-security/harden-runner from 2.9.1 to 2.10.1
dependabot[bot] Oct 11, 2024
5ffc721
meta: bump github/codeql-action from 3.26.6 to 3.26.10
dependabot[bot] Oct 11, 2024
335a507
meta: bump codecov/codecov-action from 4.5.0 to 4.6.0
dependabot[bot] Oct 11, 2024
59923d1
test: update `compression` wpt
avivkeller Oct 11, 2024
055d2b8
deps: update amaro to 0.1.9
nodejs-github-bot Oct 12, 2024
48bb87b
esm: mark import attributes and JSON module as stable
nicolo-ribaudo Oct 12, 2024
fe667be
assert: fix deepEqual always return true on URL
meixg Oct 13, 2024
07ad987
lib: convert transfer sequence to array in js
jazelly Oct 13, 2024
41f68f5
doc: fix ambasador markdown list
RafaelGSS Oct 13, 2024
bdc2c3b
doc: add missing return values in buffer docs
karlhorky Oct 13, 2024
d42522e
build: fix make errors that occur in Makefile
kmk324 Oct 14, 2024
eb2fab3
test: update test_util.cc for coverage
kmk324 Oct 14, 2024
bfb3c62
deps: update libuv to 1.49.1
santigimeno Oct 11, 2024
54d55f2
Revert "deps: disable io_uring support in libuv by default"
santigimeno Aug 8, 2024
a490bb8
src: remove uv__node_patch_is_using_io_uring
santigimeno Aug 8, 2024
8ceefeb
events: optimize EventTarget.addEventListener
ronag Oct 14, 2024
c028d21
diagnostics_channel: fix unsubscribe during publish
simon-id Oct 14, 2024
c5abf50
benchmark: adjust byte size for buffer-copy
RafaelGSS Oct 14, 2024
d9f0407
test_runner: require `--enable-source-maps` for sourcemap coverage
avivkeller Oct 14, 2024
a9473bb
lib: remove settled dependant signals when they are GCed
geeksilva97 Oct 14, 2024
8b28222
deps: update c-ares to v1.34.1
nodejs-github-bot Oct 15, 2024
008fb5f
deps: patch V8 to 12.9.202.28
nodejs-github-bot Oct 15, 2024
57dbbf8
src: fix winapi_strerror error string
huseyinacacak-janea Oct 15, 2024
c3f2216
doc: add instructions for WinGet build
huseyinacacak-janea Oct 15, 2024
1ce8928
sqlite: cache column names in stmt.all()
indutny Oct 15, 2024
dd848f2
lib: test_runner#mock:timers respeced timeout_max behaviour
badkeyy Oct 15, 2024
3b2b3a8
tools: fix typos
NathanBaulch Oct 15, 2024
c05582d
buffer: make Buffer work with resizable ArrayBuffer
jasnell Oct 15, 2024
903863c
deps: update simdutf to 5.6.0
nodejs-github-bot Oct 15, 2024
22d7777
esm: fix inconsistency with `importAssertion` in `resolve` hook
yesmeck Oct 15, 2024
69ee56a
test_runner: add support for scheduler.wait on mock timers
ErickWendel Oct 15, 2024
e15f779
doc: spell out condition restrictions
hybrist Sep 30, 2024
1da4168
tools: add `polyfilled` option to `prefer-primordials` rule
aduh95 Oct 17, 2024
f48d30e
build: fix path concatenation
VoltrexKeyva Oct 17, 2024
b4b6ddb
dns: honor the order option
lpinca Oct 17, 2024
9b7b4a6
test: remove duplicate tests
lpinca Oct 17, 2024
db18aca
lib: add flag to drop connection when running in cluster mode
theanarkh Oct 17, 2024
0130780
meta: change color to blue notify review-wanted
RafaelGSS Oct 17, 2024
4ba31b7
assert: make assertion_error use Myers diff algorithm
Oct 17, 2024
12d709b
meta: assign CODEOWNERS for /deps/ncrypto/*
panva Oct 17, 2024
97c6448
test_runner: mark mockTimers as stable
ErickWendel Oct 15, 2024
0be3a75
doc: add changelog for mocktimers
ErickWendel Oct 16, 2024
2967471
doc: move Beth Griggs keys to old gpg keys
RafaelGSS Oct 15, 2024
7d5bb09
doc: move Bryan English key to old gpg keys
RafaelGSS Oct 15, 2024
1ec25e8
doc: move Danielle Adams key to old gpg keys
RafaelGSS Oct 15, 2024
dd5a08d
test: update `console` wpt
avivkeller Oct 18, 2024
d9494a7
fs: use `wstring` on Windows paths
jazelly Oct 6, 2024
7b3e38b
url: handle "unsafe" characters properly in `pathToFileURL`
aduh95 Oct 18, 2024
aca03d9
benchmark: add --runs support to run.js
RafaelGSS Oct 18, 2024
89c96ad
src: remove icu based `ToASCII` and `ToUnicode`
anonrig Oct 18, 2024
4e5c90b
lib: replace `createDeferredPromise` util with `Promise.withResolvers`
anonrig Oct 19, 2024
714f272
lib: remove startsWith/endsWith primordials for char checks
gurgunday Oct 19, 2024
adead26
crypto: include openssl/rand.h explicitly
codebytere Oct 19, 2024
1b63a82
test,crypto: update WebCryptoAPI WPT
panva Oct 19, 2024
0da1632
src,lib: introduce `util.getSystemErrorMessage(err)`
juanarbol Oct 19, 2024
52da293
cli: add `--heap-prof` flag available to `NODE_OPTIONS`
juanarbol Oct 20, 2024
a12dbf0
module: simplify ts under node_modules check
marco-ippolito Oct 20, 2024
65936a8
tools: add script to synch c-ares source lists
richardlau Oct 18, 2024
2beae50
build: synchronize list of c-ares source files
richardlau Oct 18, 2024
2147e49
build: tidy up cares.gyp
richardlau Oct 18, 2024
6f7379a
test: fix invalid `file:` URL in `test-fs-path-dir`
aduh95 Oct 21, 2024
9e32027
Revert "path: fix bugs and inconsistencies"
avivkeller Oct 21, 2024
dcbc5fb
lib: add UV_UDP_REUSEPORT for udp
theanarkh Oct 21, 2024
ec867ac
net: add UV_TCP_REUSEPORT for tcp
theanarkh Oct 21, 2024
d54d3b2
meta: move one or more collaborators to emeritus
nodejs-github-bot Oct 21, 2024
c2b5ebf
deps: update ada to 2.9.1
nodejs-github-bot Oct 21, 2024
32f7d5a
build: conditionally compile bundled sqlite
richardlau Oct 21, 2024
8eb5359
build: fix uninstall script for AIX 7.1
cloorc Oct 21, 2024
784c825
doc: remove outdated remarks about `highWaterMark` in fs
isker Oct 22, 2024
45ef180
deps: update c-ares to v1.34.2
nodejs-github-bot Oct 22, 2024
bfc10a9
deps: update googletest to df1544b
nodejs-github-bot Oct 22, 2024
c10c671
test: deflake `test-cluster-shared-handle-bind-privileged-port`
avivkeller Oct 22, 2024
689d3a3
doc: add `isBigIntObject` to documentation
leviscar Oct 22, 2024
04b41bd
doc: add note about stdio streams in child_process
Ed-roro Oct 22, 2024
cc775d3
src: switch from `Get/SetPrototype` to `Get/SetPrototypeV2`
avivkeller Oct 22, 2024
94e863c
test: update wpt test for webmessaging/broadcastchannel
Nahee-Park Oct 22, 2024
6c8564b
test: fix addons and node-api test assumptions
aduh95 Oct 22, 2024
736c085
typings: add missing type of `ArrayBufferPrototypeGetByteLength`
iwuliz Oct 22, 2024
45f960c
fs: pass correct path to `DirentFromStats` during `glob`
avivkeller Oct 22, 2024
10f6b90
tools: update gyp-next to 0.18.3
nodejs-github-bot Oct 22, 2024
2ac2c5a
tools: update lint-md-dependencies
nodejs-github-bot Oct 22, 2024
8634e05
test: make test-node-output-v8-warning more flexible
codebytere Oct 22, 2024
bbd5318
esm: add a fallback when importer in not a file
aduh95 Oct 22, 2024
6764273
stream: propagate AbortSignal reason
marvinroger Oct 22, 2024
2c960a2
module: include module information in require(esm) warning
joyeecheung Oct 22, 2024
66bcf4c
doc: move dual package shipping docs to separate repo
joyeecheung Oct 22, 2024
194bb0f
build: fix GN build for cares/uv deps
zcbenz Oct 23, 2024
0f1d13e
lib: ensure FORCE_COLOR forces color output in non-TTY environments
pmarchini Oct 23, 2024
37352ce
doc: changed the command used to verify SHASUMS256
adriancuadrado Oct 23, 2024
df2f1ad
deps: V8: cherry-pick f915fa4c9f41
legendecas Oct 21, 2024
4dc2791
test: add repl preview timeout test
legendecas Oct 21, 2024
17fae65
2024-10-24, Version 23.1.0 (Current)
aduh95 Oct 24, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
deps: patch V8 to 12.9.202.28
Refs: v8/v8@12.9.202.26...12.9.202.28
PR-URL: #55371
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
  • Loading branch information
nodejs-github-bot authored and aduh95 committed Oct 19, 2024
commit 008fb5f7f47275603caf60bbeec9e2200159d127
2 changes: 1 addition & 1 deletion deps/v8/include/v8-version.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
#define V8_MAJOR_VERSION 12
#define V8_MINOR_VERSION 9
#define V8_BUILD_NUMBER 202
#define V8_PATCH_LEVEL 26
#define V8_PATCH_LEVEL 28

// Use 1 for candidates and 0 otherwise.
// (Boolean macro values are not supported by all preprocessors.)
Expand Down
1 change: 1 addition & 0 deletions deps/v8/src/compiler/access-info.cc
Original file line number Diff line number Diff line change
Expand Up @@ -925,6 +925,7 @@ PropertyAccessInfo AccessInfoFactory::ComputePropertyAccessInfo(
return PropertyAccessInfo::NotFound(zone(), receiver_map, holder);
}

CHECK(prototype.IsJSObject());
holder = prototype.AsJSObject();
map = map_prototype_map;

Expand Down
1 change: 1 addition & 0 deletions deps/v8/src/compiler/heap-refs.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1689,6 +1689,7 @@ HolderLookupResult FunctionTemplateInfoRef::LookupHolderOfExpectedType(
if (!expected_receiver_type->IsTemplateFor(prototype.object()->map())) {
return not_found;
}
CHECK(prototype.IsJSObject());
return HolderLookupResult(CallOptimization::kHolderFound,
prototype.AsJSObject());
}
Expand Down
4 changes: 3 additions & 1 deletion deps/v8/src/compiler/js-native-context-specialization.cc
Original file line number Diff line number Diff line change
Expand Up @@ -881,7 +881,9 @@ JSNativeContextSpecialization::InferHasInPrototypeChain(
// might be a different object each time, so it's much simpler to include
// {prototype}. That does, however, mean that we must check {prototype}'s
// map stability.
if (!prototype.map(broker()).is_stable()) return kMayBeInPrototypeChain;
if (!prototype.IsJSObject() || !prototype.map(broker()).is_stable()) {
return kMayBeInPrototypeChain;
}
last_prototype = prototype.AsJSObject();
}
WhereToStart start = result == NodeProperties::kUnreliableMaps
Expand Down
7 changes: 7 additions & 0 deletions deps/v8/src/execution/isolate.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2650,6 +2650,13 @@ HandlerTable::CatchPrediction PredictExceptionFromBytecode(

HandlerTable::CatchPrediction PredictException(const FrameSummary& summary,
Isolate* isolate) {
if (!summary.IsJavaScript()) {
// This can happen when WASM is inlined by TurboFan. For now we ignore
// frames that are not JavaScript.
// TODO(https://crbug.com/349588762): We should also check Wasm code
// for exception handling.
return HandlerTable::UNCAUGHT;
}
PtrComprCageBase cage_base(isolate);
DirectHandle<AbstractCode> code = summary.AsJavaScript().abstract_code();
if (code->kind(cage_base) == CodeKind::BUILTIN) {
Expand Down
221 changes: 221 additions & 0 deletions deps/v8/test/mjsunit/wasm/regress-367818758.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,221 @@
// Copyright 2024 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Flags: --allow-natives-syntax

var kWasmH0 = 0;
var kWasmH1 = 0x61;
var kWasmH2 = 0x73;
var kWasmH3 = 0x6d;
var kWasmV0 = 0x1;
var kWasmV1 = 0;
var kWasmV2 = 0;
var kWasmV3 = 0;
let kTypeSectionCode = 1; // Function signature declarations
let kFunctionSectionCode = 3; // Function declarations
let kExportSectionCode = 7; // Exports
let kCodeSectionCode = 10; // Function code
let kWasmFunctionTypeForm = 0x60;
let kWasmStructTypeForm = 0x5f;
let kNoSuperType = 0xFFFFFFFF;
let kWasmI32 = 0x7f;
let kWasmExternRef = -0x11;
let kLeb128Mask = 0x7f;
let kExternalFunction = 0;
function makeSig(params, results) {
return {params: params, results: results};
}
const kWasmOpcodes = {
'End': 0x0b,
'I32Const': 0x41,
};
function defineWasmOpcode(name, value) {
Object.defineProperty(globalThis, name, {value: value});
}
for (let name in kWasmOpcodes) {
defineWasmOpcode(`kExpr${name}`, kWasmOpcodes[name]);
}
const kPrefixOpcodes = {
'GC': 0xfb,
};
for (let prefix in kPrefixOpcodes) {
defineWasmOpcode(`k${prefix}Prefix`, kPrefixOpcodes[prefix]);
}
let kExprStructNew = 0x00;
let kExprExternConvertAny = 0x1b;
class Binary {
constructor() {
this.length = 0;
this.buffer = new Uint8Array(8192);
}
trunc_buffer() {
return new Uint8Array(this.buffer.buffer, 0, this.length);
}
emit_u8(val) {
this.buffer[this.length++] = val;
}
emit_leb_u(val) {
let v = val & 0xff;
this.buffer[this.length++] = v;
}
emit_u32v(val) {
this.emit_leb_u(val);
}
emit_bytes(data) {
this.buffer.set(data, this.length);
this.length += data.length;
}
emit_string(string) {
let string_utf8 = string;
this.emit_u32v(string_utf8.length);
for (let i = 0; i < string_utf8.length; i++) {
this.emit_u8(string_utf8.charCodeAt(i));
}
}
emit_type(type) {
this.emit_u8(type >= 0 ? type : type & kLeb128Mask);
}
emit_header() {
this.emit_bytes([
kWasmH0, kWasmH1, kWasmH2, kWasmH3, kWasmV0, kWasmV1, kWasmV2, kWasmV3
]);
}
emit_section(section_code, content_generator) {
this.emit_u8(section_code);
const section = new Binary;
content_generator(section);
this.emit_u32v(section.length);
this.emit_bytes(section.trunc_buffer());
}
}
class WasmFunctionBuilder {
constructor(module, name, type_index, arg_names) {
this.module = module;
this.name = name;
this.type_index = type_index;
}
exportAs(name) {
this.module.addExport(name, this.index);
}
exportFunc() {
this.exportAs(this.name);
return this;
}
addBody(body) {
this.body = body.concat([kExprEnd]);
}
}
function makeField(type, mutability) {
return {type: type, mutability: mutability};
}
class WasmStruct {
constructor(fields) {
this.fields = fields;
}
}
class WasmModuleBuilder {
constructor() {
this.types = [];
this.exports = [];
this.functions = [];
}
addType(type, supertype_idx = kNoSuperType, is_final = true,
is_shared = false) {
var type_copy = {params: type.params, results: type.results,
is_final: is_final, is_shared: is_shared,
supertype: supertype_idx};
this.types.push(type_copy);
return this.types.length - 1;
}
addStruct(fields = kNoSuperType = false, is_shared = false) {
this.types.push(new WasmStruct(fields));
}
addFunction(name, type, arg_names) {
let type_index =typeof type == 'number' ? type : this.addType(type);
let func = new WasmFunctionBuilder(this, name, type_index);
this.functions.push(func);
return func;
}
addExport(name, index) {
this.exports.push({name: name, kind: kExternalFunction, index: index});
}
toBuffer() {
let binary = new Binary;
let wasm = this;
binary.emit_header();
binary.emit_section(kTypeSectionCode, section => {
let length_with_groups = wasm.types.length;
section.emit_u32v(length_with_groups);
for (let i = 0; i < wasm.types.length; i++) {
let type = wasm.types[i];
if (type instanceof WasmStruct) {
section.emit_u8(kWasmStructTypeForm);
section.emit_u32v(type.fields.length);
for (let field of type.fields) {
section.emit_type(field.type);
section.emit_u8();
}
} else {
section.emit_u8(kWasmFunctionTypeForm);
section.emit_u32v();
section.emit_u32v(type.results.length);
for (let result of type.results) {
section.emit_type(result);
}
}
}
});
binary.emit_section(kFunctionSectionCode, section => {
section.emit_u32v(wasm.functions.length);
for (let func of wasm.functions) {
section.emit_u32v(func.type_index);
}
});
var exports_count = wasm.exports.length;
binary.emit_section(kExportSectionCode, section => {
section.emit_u32v(exports_count);
for (let exp of wasm.exports) {
section.emit_string(exp.name);
section.emit_u8();
section.emit_u32v();
}
});
binary.emit_section(kCodeSectionCode, section => {
section.emit_u32v(wasm.functions.length);
for (let func of wasm.functions) {
section.emit_u32v(func.body.length + 1);
section.emit_u8(); // 0 locals.
section.emit_bytes(func.body);
}
});
return binary.trunc_buffer();
}
instantiate() {
let module = this.toModule();
let instance = new WebAssembly.Instance(module);
return instance;
}
toModule() {
return new WebAssembly.Module(this.toBuffer());
}
}
let builder = new WasmModuleBuilder();
let struct_type = builder.addStruct([makeField(kWasmI32)]);
builder.addFunction('MakeStruct', makeSig([], [kWasmExternRef])).exportFunc()
.addBody([kExprI32Const, 42, kGCPrefix, kExprStructNew, struct_type,
kGCPrefix, kExprExternConvertAny]);
let instance = builder.instantiate();
let evil_wasm_object = instance.exports.MakeStruct();
function evil_ctor(){
}
function evil_cast_jit(evil_o){
global_collect_node_info = evil_o; // get nodeinfo from PropertyCellStore
return evil_o instanceof evil_ctor;
}
evil_ctor.prototype = evil_wasm_object;
%PrepareFunctionForOptimization(evil_cast_jit);
evil_cast_jit(new evil_ctor());
evil_cast_jit(new evil_ctor());
%OptimizeFunctionOnNextCall(evil_cast_jit);
evil_cast_jit();