Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit b470354

Browse filesBrowse files
MylesBorinsaddaleax
authored andcommitted
deps: patch V8 to 7.9.317.25
Refs: v8/v8@7.9.317.23...7.9.317.25 PR-URL: #30679 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Jiawen Geng <technicalcute@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
1 parent 80ada94 commit b470354
Copy full SHA for b470354

File tree

Expand file treeCollapse file tree

7 files changed

+69
-17
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

7 files changed

+69
-17
lines changed
Open diff view settings
Collapse file

‎deps/v8/include/v8-version.h‎

Copy file name to clipboardExpand all lines: deps/v8/include/v8-version.h
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
#define V8_MAJOR_VERSION 7
1212
#define V8_MINOR_VERSION 9
1313
#define V8_BUILD_NUMBER 317
14-
#define V8_PATCH_LEVEL 23
14+
#define V8_PATCH_LEVEL 25
1515

1616
// Use 1 for candidates and 0 otherwise.
1717
// (Boolean macro values are not supported by all preprocessors.)
Collapse file

‎deps/v8/src/builtins/builtins-wasm-gen.cc‎

Copy file name to clipboardExpand all lines: deps/v8/src/builtins/builtins-wasm-gen.cc
+15-12Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -121,18 +121,19 @@ TF_BUILTIN(WasmAtomicNotify, WasmBuiltinsAssembler) {
121121
TNode<Code> centry = LoadCEntryFromInstance(instance);
122122

123123
TNode<Code> target = LoadBuiltinFromFrame(Builtins::kAllocateHeapNumber);
124+
TNode<Object> context = LoadContextFromInstance(instance);
124125

125126
// TODO(aseemgarg): Use SMIs if possible for address and count
126127
TNode<HeapNumber> address_heap = UncheckedCast<HeapNumber>(
127-
CallStub(AllocateHeapNumberDescriptor(), target, NoContextConstant()));
128+
CallStub(AllocateHeapNumberDescriptor(), target, context));
128129
StoreHeapNumberValue(address_heap, ChangeUint32ToFloat64(address));
129130

130131
TNode<HeapNumber> count_heap = UncheckedCast<HeapNumber>(
131-
CallStub(AllocateHeapNumberDescriptor(), target, NoContextConstant()));
132+
CallStub(AllocateHeapNumberDescriptor(), target, context));
132133
StoreHeapNumberValue(count_heap, ChangeUint32ToFloat64(count));
133134

134135
TNode<Smi> result_smi = UncheckedCast<Smi>(CallRuntimeWithCEntry(
135-
Runtime::kWasmAtomicNotify, centry, NoContextConstant(), instance,
136+
Runtime::kWasmAtomicNotify, centry, context, instance,
136137
address_heap, count_heap));
137138
ReturnRaw(SmiToInt32(result_smi));
138139
}
@@ -149,23 +150,24 @@ TF_BUILTIN(WasmI32AtomicWait, WasmBuiltinsAssembler) {
149150
TNode<Code> centry = LoadCEntryFromInstance(instance);
150151

151152
TNode<Code> target = LoadBuiltinFromFrame(Builtins::kAllocateHeapNumber);
153+
TNode<Object> context = LoadContextFromInstance(instance);
152154

153155
// TODO(aseemgarg): Use SMIs if possible for address and expected_value
154156
TNode<HeapNumber> address_heap = UncheckedCast<HeapNumber>(
155-
CallStub(AllocateHeapNumberDescriptor(), target, NoContextConstant()));
157+
CallStub(AllocateHeapNumberDescriptor(), target, context));
156158
StoreHeapNumberValue(address_heap, ChangeUint32ToFloat64(address));
157159

158160
TNode<HeapNumber> expected_value_heap = UncheckedCast<HeapNumber>(
159-
CallStub(AllocateHeapNumberDescriptor(), target, NoContextConstant()));
161+
CallStub(AllocateHeapNumberDescriptor(), target, context));
160162
StoreHeapNumberValue(expected_value_heap,
161163
ChangeInt32ToFloat64(expected_value));
162164

163165
TNode<HeapNumber> timeout_heap = UncheckedCast<HeapNumber>(
164-
CallStub(AllocateHeapNumberDescriptor(), target, NoContextConstant()));
166+
CallStub(AllocateHeapNumberDescriptor(), target, context));
165167
StoreHeapNumberValue(timeout_heap, timeout);
166168

167169
TNode<Smi> result_smi = UncheckedCast<Smi>(CallRuntimeWithCEntry(
168-
Runtime::kWasmI32AtomicWait, centry, NoContextConstant(), instance,
170+
Runtime::kWasmI32AtomicWait, centry, context, instance,
169171
address_heap, expected_value_heap, timeout_heap));
170172
ReturnRaw(SmiToInt32(result_smi));
171173
}
@@ -184,28 +186,29 @@ TF_BUILTIN(WasmI64AtomicWait, WasmBuiltinsAssembler) {
184186
TNode<Code> centry = LoadCEntryFromInstance(instance);
185187

186188
TNode<Code> target = LoadBuiltinFromFrame(Builtins::kAllocateHeapNumber);
189+
TNode<Object> context = LoadContextFromInstance(instance);
187190

188191
// TODO(aseemgarg): Use SMIs if possible for address and expected_value
189192
TNode<HeapNumber> address_heap = UncheckedCast<HeapNumber>(
190-
CallStub(AllocateHeapNumberDescriptor(), target, NoContextConstant()));
193+
CallStub(AllocateHeapNumberDescriptor(), target, context));
191194
StoreHeapNumberValue(address_heap, ChangeUint32ToFloat64(address));
192195

193196
TNode<HeapNumber> expected_value_high_heap = UncheckedCast<HeapNumber>(
194-
CallStub(AllocateHeapNumberDescriptor(), target, NoContextConstant()));
197+
CallStub(AllocateHeapNumberDescriptor(), target, context));
195198
StoreHeapNumberValue(expected_value_high_heap,
196199
ChangeUint32ToFloat64(expected_value_high));
197200

198201
TNode<HeapNumber> expected_value_low_heap = UncheckedCast<HeapNumber>(
199-
CallStub(AllocateHeapNumberDescriptor(), target, NoContextConstant()));
202+
CallStub(AllocateHeapNumberDescriptor(), target, context));
200203
StoreHeapNumberValue(expected_value_low_heap,
201204
ChangeUint32ToFloat64(expected_value_low));
202205

203206
TNode<HeapNumber> timeout_heap = UncheckedCast<HeapNumber>(
204-
CallStub(AllocateHeapNumberDescriptor(), target, NoContextConstant()));
207+
CallStub(AllocateHeapNumberDescriptor(), target, context));
205208
StoreHeapNumberValue(timeout_heap, timeout);
206209

207210
TNode<Smi> result_smi = UncheckedCast<Smi>(CallRuntimeWithCEntry(
208-
Runtime::kWasmI64AtomicWait, centry, NoContextConstant(), instance,
211+
Runtime::kWasmI64AtomicWait, centry, context, instance,
209212
address_heap, expected_value_high_heap, expected_value_low_heap,
210213
timeout_heap));
211214
ReturnRaw(SmiToInt32(result_smi));
Collapse file

‎deps/v8/src/compiler/heap-refs.h‎

Copy file name to clipboardExpand all lines: deps/v8/src/compiler/heap-refs.h
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,7 @@ class ContextRef : public HeapObjectRef {
389389
V(JSFunction, object_function) \
390390
V(JSFunction, promise_function) \
391391
V(JSFunction, promise_then) \
392+
V(JSFunction, regexp_function) \
392393
V(JSFunction, string_function) \
393394
V(JSFunction, symbol_function) \
394395
V(JSGlobalObject, global_object) \
Collapse file

‎deps/v8/src/compiler/js-call-reducer.cc‎

Copy file name to clipboardExpand all lines: deps/v8/src/compiler/js-call-reducer.cc
+7-4Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7098,11 +7098,14 @@ Reduction JSCallReducer::ReduceRegExpPrototypeTest(Node* node) {
70987098
Node* control = NodeProperties::GetControlInput(node);
70997099
Node* regexp = NodeProperties::GetValueInput(node, 1);
71007100

7101+
// Only the initial JSRegExp map is valid here, since the following lastIndex
7102+
// check as well as the lowered builtin call rely on a known location of the
7103+
// lastIndex field.
7104+
Handle<Map> regexp_initial_map =
7105+
native_context().regexp_function().initial_map().object();
7106+
71017107
MapInference inference(broker(), regexp, effect);
7102-
if (!inference.HaveMaps() ||
7103-
!inference.AllOfInstanceTypes(InstanceTypeChecker::IsJSRegExp)) {
7104-
return inference.NoChange();
7105-
}
7108+
if (!inference.Is(regexp_initial_map)) return inference.NoChange();
71067109
MapHandles const& regexp_maps = inference.GetMaps();
71077110

71087111
ZoneVector<PropertyAccessInfo> access_infos(graph()->zone());
Collapse file

‎deps/v8/src/compiler/map-inference.cc‎

Copy file name to clipboardExpand all lines: deps/v8/src/compiler/map-inference.cc
+7Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,13 @@ MapHandles const& MapInference::GetMaps() {
9191
return maps_;
9292
}
9393

94+
bool MapInference::Is(Handle<Map> expected_map) {
95+
if (!HaveMaps()) return false;
96+
const MapHandles& maps = GetMaps();
97+
if (maps.size() != 1) return false;
98+
return maps[0].equals(expected_map);
99+
}
100+
94101
void MapInference::InsertMapChecks(JSGraph* jsgraph, Node** effect,
95102
Node* control,
96103
const FeedbackSource& feedback) {
Collapse file

‎deps/v8/src/compiler/map-inference.h‎

Copy file name to clipboardExpand all lines: deps/v8/src/compiler/map-inference.h
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ class MapInference {
5555
V8_WARN_UNUSED_RESULT MapHandles const& GetMaps();
5656
V8_WARN_UNUSED_RESULT bool AllOfInstanceTypes(
5757
std::function<bool(InstanceType)> f);
58+
V8_WARN_UNUSED_RESULT bool Is(Handle<Map> expected_map);
5859

5960
// These methods provide a guard.
6061
//
Collapse file
+37Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// Copyright 2019 the V8 project authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
//
5+
// Flags: --allow-natives-syntax
6+
7+
function f() {
8+
return r.test("abc");
9+
}
10+
11+
function to_dict(o) {
12+
r.a = 42;
13+
r.b = 42;
14+
delete r.a;
15+
}
16+
17+
function to_fast(o) {
18+
const obj = {};
19+
const obj2 = {};
20+
delete o.a;
21+
obj.__proto__ = o;
22+
obj[0] = 1;
23+
obj.__proto__ = obj2;
24+
delete obj[0];
25+
return o;
26+
}
27+
28+
// Shrink the instance size by first transitioning to dictionary properties,
29+
// then back to fast properties.
30+
const r = /./;
31+
to_dict(r);
32+
to_fast(r);
33+
34+
%PrepareFunctionForOptimization(f);
35+
assertTrue(f());
36+
%OptimizeFunctionOnNextCall(f);
37+
assertTrue(f());

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.