Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

deps: patch V8 to 8.1.307.30 #32693

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
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 8
#define V8_MINOR_VERSION 1
#define V8_BUILD_NUMBER 307
#define V8_PATCH_LEVEL 26
#define V8_PATCH_LEVEL 30

// Use 1 for candidates and 0 otherwise.
// (Boolean macro values are not supported by all preprocessors.)
Expand Down
8 changes: 7 additions & 1 deletion deps/v8/src/builtins/builtins-function.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "src/api/api-inl.h"
#include "src/builtins/builtins-utils-inl.h"
#include "src/builtins/builtins.h"
#include "src/codegen/code-factory.h"
Expand Down Expand Up @@ -31,7 +32,12 @@ MaybeHandle<Object> CreateDynamicFunction(Isolate* isolate,

if (!Builtins::AllowDynamicFunction(isolate, target, target_global_proxy)) {
isolate->CountUsage(v8::Isolate::kFunctionConstructorReturnedUndefined);
return isolate->factory()->undefined_value();
// TODO(verwaest): We would like to throw using the calling context instead
// of the entered context but we don't currently have access to that.
HandleScopeImplementer* impl = isolate->handle_scope_implementer();
SaveAndSwitchContext save(
isolate, impl->LastEnteredOrMicrotaskContext()->native_context());
THROW_NEW_ERROR(isolate, NewTypeError(MessageTemplate::kNoAccess), Object);
}

// Build the source string.
Expand Down
25 changes: 23 additions & 2 deletions deps/v8/src/regexp/regexp-interpreter.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1051,8 +1051,29 @@ IrregexpInterpreter::Result IrregexpInterpreter::MatchForCallFromJs(
return IrregexpInterpreter::RETRY;
}

return Match(isolate, regexp_obj, subject_string, registers, registers_length,
start_position, call_origin);
// In generated code, registers are allocated on the stack. The given
// `registers` argument is only guaranteed to hold enough space for permanent
// registers (i.e. for captures), and not for temporary registers used only
// during matcher execution. We match that behavior in the interpreter by
// using a SmallVector as internal register storage.
static constexpr int kBaseRegisterArraySize = 64; // Arbitrary.
const int internal_register_count =
Smi::ToInt(regexp_obj.DataAt(JSRegExp::kIrregexpMaxRegisterCountIndex));
base::SmallVector<int, kBaseRegisterArraySize> internal_registers(
internal_register_count);

Result result =
Match(isolate, regexp_obj, subject_string, internal_registers.data(),
internal_register_count, start_position, call_origin);

// Copy capture registers to the output array.
if (result == IrregexpInterpreter::SUCCESS) {
CHECK_GE(internal_registers.size(), registers_length);
MemCopy(registers, internal_registers.data(),
registers_length * sizeof(registers[0]));
}

return result;
}

IrregexpInterpreter::Result IrregexpInterpreter::MatchForCallFromRuntime(
Expand Down
6 changes: 6 additions & 0 deletions deps/v8/src/wasm/wasm-engine.cc
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,9 @@ class WasmGCForegroundTask : public CancelableTask {
std::shared_ptr<NativeModule> NativeModuleCache::MaybeGetNativeModule(
ModuleOrigin origin, Vector<const uint8_t> wire_bytes) {
if (origin != kWasmOrigin) return nullptr;
// Temporarily disabled to fix stability issue on M-81
// (https://crbug.com/1070199).
if (!FLAG_future) return nullptr;
base::MutexGuard lock(&mutex_);
while (true) {
auto it = map_.find(wire_bytes);
Expand All @@ -153,6 +156,9 @@ void NativeModuleCache::Update(std::shared_ptr<NativeModule> native_module,
bool error) {
DCHECK_NOT_NULL(native_module);
if (native_module->module()->origin != kWasmOrigin) return;
// Temporarily disabled to fix stability issue on M-81
// (https://crbug.com/1070199).
if (!FLAG_future) return;
Vector<const uint8_t> wire_bytes = native_module->wire_bytes();
base::MutexGuard lock(&mutex_);
auto it = map_.find(wire_bytes);
Expand Down
7 changes: 7 additions & 0 deletions deps/v8/test/cctest/cctest.status
Original file line number Diff line number Diff line change
Expand Up @@ -600,4 +600,11 @@
'test-cpu-profiler/DeoptUntrackedFunction': [SKIP],
}], # variant == turboprop

##############################################################################
['variant != future', {
# Wasm native module cache is temporarily disabled in non-future variant
# (https://crbug.com/1070199)
'test-compilation-cache/*': [SKIP]
}], # variant != future

]
6 changes: 6 additions & 0 deletions deps/v8/test/inspector/inspector.status
Original file line number Diff line number Diff line change
Expand Up @@ -84,5 +84,11 @@
}], # 'arch == s390 or arch == s390x'

##############################################################################
['variant != future', {
# Wasm native module cache is temporarily disabled in non-future variant
# (https://crbug.com/1070199)
'debugger/wasm-scripts': [SKIP],
}], # variant != future


]
3 changes: 3 additions & 0 deletions deps/v8/test/mjsunit/mjsunit.status
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,9 @@
# OOM with too many isolates/memory objects (https://crbug.com/1010272)
# Predictable tests fail due to race between postMessage and GrowMemory
'regress/wasm/regress-1010272': [PASS, NO_VARIANTS, ['system == android', SKIP], ['predictable', SKIP]],

# Needs to be adapted after changes to Function constructor. chromium:1065094
'cross-realm-filtering': [SKIP],
}], # ALWAYS

##############################################################################
Expand Down
19 changes: 19 additions & 0 deletions deps/v8/test/mjsunit/regress-1065094.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// Copyright 2020 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Flags: --allow-natives-syntax

function f(fnConstructor) {
return Object.is(new fnConstructor(), undefined);
}

const realmIndex = Realm.createAllowCrossRealmAccess();
const otherFunction = Realm.global(realmIndex).Function;
Realm.detachGlobal(realmIndex);

%PrepareFunctionForOptimization(f);
assertFalse(f(Function));
assertThrows(_ => f(otherFunction));
%OptimizeFunctionOnNextCall(f);
assertThrows(_ => f(otherFunction));
11 changes: 11 additions & 0 deletions deps/v8/test/mjsunit/regress/regress-1067270.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// Copyright 2020 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Flags: --allow-natives-syntax

const needle = Array(1802).join(" +") + Array(16884).join("A");
const string = "A";

assertEquals(string.search(needle), -1);
assertEquals(string.search(needle), -1);