The code of kArmWord32AtomicPairStore is not self-explanatory,
especially why {ldrexd} is used. This CL adds some documentation to
make it more understandable.
Additionally this CL changes the code generation to use {cmp} instead
of {teq}. It's the preferred (idiomatic) sequence on Arm.
R=v8-arm-ports@googlegroups.com
Bug: v8:10155
Change-Id: I32946a333c352250045dbd8872862529a63c8772
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2129638
Reviewed-by: Jacob Bramley <jacob.bramley@arm.com>
Reviewed-by: Bill Budge <bbudge@chromium.org>
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66987}
This commit adds a few fixes neccessary for integrating the
fast C API into Blink:
- added default constructor for CFunction
- removed a bogus template specialization allowing void* params
- extended the public Isolate class
Bug: chromium:1052746
Change-Id: I4f2ba84299920e2cc9d66ec1ed59302313db6c0b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2120587
Commit-Queue: Maya Lekova <mslekova@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66986}
Adding code can happen in parallel (it includes copying the code to the
code region and relocation it). Publishing happens under one lock per
native module though. We eventually want to avoid blocking on this lock
for too long. This CL prepares that by splitting the actions of adding
and publishing code.
R=ahaas@chromium.org
Bug: v8:10330, v8:10387
Change-Id: Iddbdadfe32e691bbf5e7b387ea947579bc3376f3
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2134372
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66979}
For easier debugging of Liftoff code generation issues, add code
comments or out-of-line code.
The name is generated from the {RuntimeStubId}. The respective name
accessor is currently defined on the {NativeModule}, this CL makes it a
top-level function so we can reuse it from Liftoff.
R=thibaudm@chromium.org
Bug: v8:10235
Change-Id: I7b99779217b9c052e34ad132eb34859b20548092
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2134307
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Thibaud Michaud <thibaudm@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66978}
This reverts commit 10360127e8.
Reason for revert: This fix only had moderate impact and the
underlying CPU bug has now been addressed.
Original change's description:
> Speculative fix to crashes from a CPU bug
>
> For the last few months Chrome has been seeing many "impossible" crashes
> on Intel Gemini Lake, family 6 model 122 stepping 1 CPUs. These crashes
> only happen with 64-bit Chrome and only happen in the prologue of two
> functions. The crashes come and go across different Chrome versions.
> Analysis of most of the crashes shows that the address of the crashing
> instruction follows some patterns:
>
> When crashing in GetFieldIndex() the last byte of the address is always
> 1c, 5c, 9c, or dc.
>
> When crashing in UpdateCaches (fewer unique samples) the last byte of
> the address is always 5d or 9d.
>
> The address of the function is 0xc or 0xd bytes earlier so the crashing
> functions always start with an address that ends in 10, 50, 90, or d0.
>
> Those addresses are for the crashes on a load of the __security_cookie.
> The crashes also occasionally happen on the two instructions that follow
> the __security_cookie load in which case the crashing instruction's
> address has been seen to end with 23 or a3. This corresponds to a
> function start address of 10 or 90.
>
> Since the crash involves reading incorrect instruction bytes when
> crossing a 16-byte boundary and since the crash appears to only happen
> with particular 16-byte alignments it seems reasonable to force the
> function's alignments to a multiple of 32 to see if this reliably
> avoids the crashes. This change uses the gcc/clang __attribute__
> directive to force 32-byte alignment. I have tested this change enough to
> verify that it triggers the desired alignment (with up to 31 "int 3"
> instructions added for padding) but since I have never reproduced this
> crash I have no way of testing its efficacy.
>
> Bug: chromium:968683, chromium:964273
> Change-Id: Ia6e1c6d1e044b84d274817374b25523303e78b51
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1803775
> Reviewed-by: Toon Verwaest <verwaest@chromium.org>
> Commit-Queue: Bruce Dawson <brucedawson@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#63804}
TBR=brucedawson@chromium.org,verwaest@chromium.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: chromium:968683, chromium:964273
Change-Id: I150ecfebeff95e8f63dbba74d78491867dc17736
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2134728
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Auto-Submit: Bruce Dawson <brucedawson@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66977}
We cannot rely on the clang compiler to generate the trampoline entry
and the right mangling because `__attribute__((naked))` does not
prevent clang from generating TSAN function entry stub
(`__tsan_func_entry`). Even with `__attribute__((no_sanitize_thread)`
annotation clang generates the entry stub.
Upstream bug: https://bugs.llvm.org/show_bug.cgi?id=45400
Bug: chromium:1056170
Change-Id: I7a2063d7d205ee071e6a41ce4d9cb2d8d6423987
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2132797
Reviewed-by: Omer Katz <omerkatz@chromium.org>
Reviewed-by: Anton Bikineev <bikineev@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66976}
Add support for ia32 Windows using clang. Change the callback
function from a member function to a free function. This the
compiler generating thiscall calling convention for the member
function which allows for keeping the asm trampoline uniform.
Bug: chromium:1056170
Change-Id: Ic8fcac27a628a0de026d8fe7d2e376c8f58a1737
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2134136
Reviewed-by: Anton Bikineev <bikineev@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66975}
Remove other variants for the same functionality such as IsCallable(),
TaggedIsCallable(), and !TaggedIsSmi() && IsCallable().
Change-Id: I33bcdf7699c1adf2330b3c11f482f7bbfcd927b3
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2107515
Commit-Queue: Timothy Gu <timothygu@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66973}
i64x2 mul is more tricky, the algorithm is slightly modified:
- for arm64, we can only use 2 temporaries
- for arm, we only have 1 temporary, so we get another register
manually, if we need it (modify lhs/rhs if they are not used)
Bug: v8:9909
Change-Id: I0398e2c95348a8b49ca9773a78ccfb7af73e2eef
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2128606
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66971}
f6b2ccdd..ae8694b4
ae8694b Copy "invalid options" test from RelativeTimeFormat to NumberFormat/DateTimeFormat by André Bargull · 2 days ago
299cd74 Promise.any: fix "invoke-then.js" test by Rick Waldron · 2 days ago
9ccd3a7 Test revoked callable [[ProxyTarget]] by Alexey Shvayka · 2 days ago
91b867b Fix non-callable [[ProxyTarget]] test by Alexey Shvayka · 2 days ago
e8e3aaa Test revoked [[ProxyHandler]] by Alexey Shvayka · 2 days ago
8b610fb Test revoked [[ProxyTarget]] by Alexey Shvayka · 2 days ago
432adbb Adding case where 'static' is used as a field name by Caio Lima · 4 days ago
4bf836c Merge pull request #2533 from tc39/promise-any by Leo Balter · 5 days ago
22be03d Promise.any: lint fixes by Rick Waldron · 5 days ago
d53f45d Promise.any: remove unnecessary static resolve def by Rick Waldron · 7 days ago
499b748 Promise.any: review fixes, 2 by Rick Waldron · 7 days ago
b21b0c1 Promise.any: additional "resolve from rejection" tests by Rick Waldron · 7 days ago
a05fb94 Promise.any: feature flags, 2 by Rick Waldron · 7 days ago
7fbce5a Promise.any: simplify promise creation by Rick Waldron · 7 days ago
5c68b60 Promise.any: cleanup in @@species tests by Rick Waldron · 7 days ago
d9265df Promise.any: additional then + resolve tests by Rick Waldron · 7 days ago
1c74850 Promise.any: feature flags by Rick Waldron · 7 days ago
5d3eafc Promise.any: review fixes by Rick Waldron · 7 days ago
f70e3e3 Features: remove duplicate "Promise.any" by Rick Waldron · 7 days ago
6edaba3 Promise.any: updates, corrections and new tests. by Rick Waldron · 7 days ago
e0f0c78 Promise.any: empty iterable rejects with AggregateError by Rick Waldron · 7 days ago
272e9ab Promise.any: make async operation test actually async by Rick Waldron · 7 days ago
47b3858 Promise.any: expected rejection shouldn't end with error message. by Rick Waldron · 7 days ago
55b22d8 Promise.any: string iterable should not be rejected (adds error message for clarity) by Rick Waldron · 7 days ago
e0abeaa Promise.any: convert sync test to async test to ensure run to completion by Rick Waldron · 7 days ago
860e02a add iter-assigned tests by chicoxyzzy · 7 days ago
9567abd Add iter-arg tests by chicoxyzzy · 7 days ago
094ddc7 add species-get-error test by chicoxyzzy · 7 days ago
e3d48f2 add Invocation of the instance's `then` method test by chicoxyzzy · 7 days ago
afe3f0b add reject-immed test by chicoxyzzy · 7 days ago
adcd162 add is callable test by chicoxyzzy · 7 days ago
88d058b Add returns promise test by chicoxyzzy · 7 days ago
be1bf63 Add Promise and Promise.any properties tests by chicoxyzzy · 7 days ago
23d7f0b add Invocation of the constructor's `resolve` method test by chicoxyzzy · 7 days ago
f0fd4e0 update features.txt by chicoxyzzy · 7 days ago
aca1084 Add context tests by chicoxyzzy · 7 days ago
715964b Add Capability Executor tests by chicoxyzzy · 7 days ago
96cf757 Harness: properly format negative zero by Alexey Shvayka · 7 days ago
1e63ce0 Improve String.prototype.@@replace poisoned stdlib test by Alexey Shvayka · 7 days ago
9b71a7c Fix inconsistent indentation in YAML by Alexey Shvayka · 7 days ago
ad046ce Avoid using Array.isArray directly by Alexey Shvayka · 7 days ago
8fe71e1 Drop JSON.stringify stack overflow tests by Alexey Shvayka · 7 days ago
dfc7ecc AggregateError: If NewTarget is undefined, let newTarget be the active function object (#2537) by Rick Waldron · 9 days ago
db6f630 Adding test coverage for 'OptionalChain'.PrivateIdentifier case (#2534) by Caio Lima · 9 days ago
344612b Fix: Proxy set, if trap is undefined (#2536) by Rick Waldron · 9 days ago
79146e5 Bring back `verifyProp` param to `isWritable` by Alexey Shvayka · 9 days ago
3bf630c Add for/in test by Alexey Shvayka · 9 days ago
33b9bba Add Reflect.ownKeys test by Alexey Shvayka · 9 days ago
b273aff Add Object.values test by Alexey Shvayka · 9 days ago
5874ca4 Add Object.keys test by Alexey Shvayka · 9 days ago
c370276 Add Object.getOwnPropertySymbols test by Alexey Shvayka · 9 days ago
62c9541 Add Object.getOwnPropertyNames test by Alexey Shvayka · 9 days ago
021b8f2 Add Object.getOwnPropertyDescriptors test by Alexey Shvayka · 9 days ago
b94190e Add Object.entries test by Alexey Shvayka · 9 days ago
2abfc8c Remove unused `verifyProp` paramter from `isWritable` by Alexey Shvayka · 9 days ago
86b9409 Increase unlikely array length by Alexey Shvayka · 9 days ago
17fc109 Fix isWritable throwing RangeError on Array "length" by Alexey Shvayka · 9 days ago
1eff480 Add toJSON stack overflow test by Alexey Shvayka · 9 days ago
2255a0f Add replacer stack overflow test by Alexey Shvayka · 9 days ago
d2b5f63 Improve "info" meta of replacer with deleted property test by Alexey Shvayka · 9 days ago
dc21d6b Add "lastIndex" restore test by Alexey Shvayka · 9 days ago
fe2dfe9 Add "lastIndex" init test by Alexey Shvayka · 9 days ago
fe4e96d Remove duplicate test regexp/u-dec-esc.js by Ross Kirsling · 9 days ago
b0bb917 add dfs tests for https://github.com/tc39/ecma262/pull/1669 by Gus Caplan · 9 days ago
b59d079 Add note on arbitrary large integer by Alexey Shvayka · 9 days ago
669250d RegExp: Test Quantifier with large integer by Alexey Shvayka · 9 days ago
8dccb69 Replace "\b" with "\u0008" by Alexey Shvayka · 9 days ago
2377131 Test \b escape inside CharacterClass in Unicode RegExp by Alexey Shvayka · 9 days ago
7117cdd Test astral literals within inverted CharacterClass by Alexey Shvayka · 9 days ago
2cae203 Add functional replacer with empty result test by Alexey Shvayka · 9 days ago
8e41e8b Add "lastIndex" length abrupt coercion test by Alexey Shvayka · 9 days ago
0485b83 Add "lastIndex" length coercion test by Alexey Shvayka · 9 days ago
807afd9 Make "length" coercion test more precise by Alexey Shvayka · 9 days ago
3f6b961 Make "index" integer coercion test more precise by Alexey Shvayka · 9 days ago
53d16ac Add "index" integer coercion test with functional replacer by Alexey Shvayka · 9 days ago
e3e0e0f Add named capture groups abrupt lookup tests by Alexey Shvayka · 9 days ago
c9e1c1c Add named capture groups abrupt coercion tests by Alexey Shvayka · 9 days ago
4d3db14 Add named capture groups coercion tests by Alexey Shvayka · 9 days ago
dbbe2e7 Add "0" string coercion test with global RegExp by Alexey Shvayka · 9 days ago
50d1419 Make string coercion tests more precise by Alexey Shvayka · 9 days ago
cf583c9 Add poisoned stdlib test by Alexey Shvayka · 9 days ago
67e58de Fix typo in file name by Alexey Shvayka · 9 days ago
fea38b7 Remove extra operation from "info" by Alexey Shvayka · 9 days ago
13082b0 Add Array#concat test by Alexey Shvayka · 9 days ago
679ad48 Add Array#reduceRight test by Alexey Shvayka · 9 days ago
2716290 Add Array#fill test by Alexey Shvayka · 9 days ago
66913bf Add Array#lastIndexOf test by Alexey Shvayka · 9 days ago
4d91ea0 Add Array#indexOf test by Alexey Shvayka · 9 days ago
5885db1 Add Array#copyWithin test by Alexey Shvayka · 9 days ago
2724ddc Dependency: test262-harness@7.3.0 by Rick Waldron · 9 days ago
f72db7e Add [[Call]] tests by Alexey Shvayka · 9 days ago
5c3ea18 Add [[Construct]] tests by Alexey Shvayka · 9 days ago
aa53649 Add [[HasProperty]] tests by Alexey Shvayka · 9 days ago
6155fca Add [[Get]] tests by Alexey Shvayka · 9 days ago
2d60dc0 Add [[Set]] tests by Alexey Shvayka · 9 days ago
983b1ac Add [[OwnPropertyKeys]] tests by Alexey Shvayka · 9 days ago
cc6d48d Add [[PreventExtensions]] tests by Alexey Shvayka · 9 days ago
3987d3c Add [[IsExtensible]] tests by Alexey Shvayka · 9 days ago
d32db7a Add [[SetPrototypeOf]] tests by Alexey Shvayka · 9 days ago
20c2ce3 Add [[GetPrototypeOf]] tests by Alexey Shvayka · 9 days ago
b9377e7 Add [[GetOwnProperty]] tests by Alexey Shvayka · 9 days ago
d46e72d Add [[Delete]] tests by Alexey Shvayka · 9 days ago
6b9929a Add [[DefineOwnProperty]] tests by Alexey Shvayka · 9 days ago
2c432e3 Add coverage for EvaluateNew by Leo Balter · 2 weeks ago
b29b1da Add tests for new identifier characters per Unicode version (#2532) by Mathias Bynens · 2 weeks ago
991e05d Move: AggregateError belongs in the NativeErrors directory (#2528) by Rick Waldron · 2 weeks ago
25c9e33 Update RegExp property escape tests per Unicode v13.0.0 (#2526) by Mathias Bynens · 3 weeks ago
22cd9fe Repair filter test that was testing concat (#2522) by Steven Cole · 3 weeks ago
b0cb75f Repair indexOf test that was testing lastIndexOf (#2521) by Steven Cole · 3 weeks ago
36882a2 Fix: AggregateError/newtarget-proto-fallback. Closes gh-2515 (#2518) by Rick Waldron · 3 weeks ago
800870c Fix DST sensitivity in Date/parse/without-utc-offset.js. (#2523) by Ross Kirsling · 3 weeks ago
7631789 add graaljs test runner by Gus Caplan · 4 weeks ago
56ae1b9 switch to esvu to streamline engine installs by Gus Caplan · 4 weeks ago
ca13f22 Fix lint.exceptions, I hope? by Ross Kirsling · 4 weeks ago
70bbce9 Add lint exception. by Ross Kirsling · 4 weeks ago
df7a0b0 Remove errant LF from CR line ending test again. by Ross Kirsling · 4 weeks ago
ec6239f typo (#2512) by Claude Pache · 5 weeks ago
Bug: v8:7834, v8:9808, v8:10379, v8:10380, v8:10381, v8:10382, v8:10383, v8:10272
Change-Id: I9c46af4f0d72a2f1e032ec1c80d40ca096ce9af9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2133311
Reviewed-by: Shu-yu Guo <syg@chromium.org>
Commit-Queue: Frank Tang <ftang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66970}
ICU-TC will deprecate NoUnit later and we were advised to
replace the code from using it.
Bug: v8:10377
Change-Id: I8d76624c5378daab1cdabae52917566d0a4dd687
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2132717
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Frank Tang <ftang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66969}
The difference to Chromium is that we support frame pointers and thus
integrate better with debugging in e.g. gdb.
Bug: chromium:1056170
Change-Id: I2109744d07a7b3af158ed3e0fe731f890b192eee
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2129630
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Anton Bikineev <bikineev@chromium.org>
Reviewed-by: Omer Katz <omerkatz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66967}
From recent discussions on https://crrev.com/c/2057355 it became clear
that the FixedRawData serializer bytecodes need to be refactored. This
CL
- updates documentation to correctly specify that data length is given
in kTaggedSize unit, and
- changes the way smi roots are serialized s.t. deserialization no
longer needs hacks to be correct on big-endian architectures and when
(theoretically) deserializing sequences of smi roots. We do this by
serializing the full object slot for smi roots instead of just the
smi contents.
Bug: v8:10374
Change-Id: I190172d8030888e1950413e436e43b3d6e3b8fd5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2130276
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Junliang Yan <jyan@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#66966}
For keyed stores we recompute handlers based on the receiver maps
we have seen. This is done so that we can transition to the most generic
elements kind we have seen so far. When we recompute this handlers we
get a new prototype validity cell and ignore the existing cell. This
leads to incorrect behaviour if the cell was invalid. Recomputing the
handler may be extra work which is not worth doing at this point. So
we just reuse the existing validity cell and let the IC recompute the
handler if we see the map again.
Bug: chromium:1053939
Change-Id: Ifc891d70f5a4b8b774238e12fb40e29b4d174e37
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2122032
Commit-Queue: Mythri Alle <mythria@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66963}
This reverts commit 8f68e39214.
Reason for revert: depot_tools started using Python3 by default with this deps roll, but it contained a Python3 bug. Reverting this and waiting for a new deps roll will fix the issue since the latest depot_tools contains the fix for this issue.
Original change's description:
> Update V8 DEPS.
>
> Rolling v8/build: 26e9d48..de373bb
>
> Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/032c783..054d61d
>
> Rolling v8/third_party/depot_tools: 2b2aec6..e3a49aa
>
> Rolling v8/tools/clang: 105a846..a560ab4
>
> TBR=machenbach@chromium.org,tmrts@chromium.org
>
> Change-Id: I04a2522f65cecb00308bdc0a8f7ed780fe4f3961
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2119950
> Reviewed-by: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com>
> Commit-Queue: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com>
> Cr-Commit-Position: refs/heads/master@{#66851}
TBR=machenbach@chromium.org,v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com,tmrts@chromium.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: chromium:1065807
Change-Id: I87281218c99c55503f577b9ab17b2d3b59792601
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2132796
Commit-Queue: Tamer Tas <tmrts@chromium.org>
Reviewed-by: Tamer Tas <tmrts@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66962}
Some embedders (e.g. ChromeOS) override the toolchain and do not
provide such macros.
Bug: chromium:1056170
Change-Id: I3012af6dd7f59580d00e58608a228df562706414
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2132798
Reviewed-by: Anton Bikineev <bikineev@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66961}
Port a1bd722799https://crrev.com/c/2129631
Original Commit Message:
This is the same cleanup as in the previous CL, but for {EmitBinOpImm}.
This requires a minor change in the name of the emit functions with
immediate, to make them distinguishable from the emit functions with two
registers. We just append an "i" to the functions with immediate.
Change-Id: I5089097cb74e204002f0dfcfb6ed10d3ade4da0d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2132346
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Zhao Jiazhong <zhaojiazhong-hf@loongson.cn>
Cr-Commit-Position: refs/heads/master@{#66959}
Use inline asm to generate the x64 PushAllRegistersAndIterateStack
which is the trampoline for conservative stack scanning. Keep the
function definition as C code to allow clang to generate the correct
mangling for each platform.
This approach has the benefit that it immediately works for all
platforms that support clang.
Bug: chromium:1056170
Change-Id: Ic7a1c1b57e67ae1442bd8bda4e55d89112facfc7
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2132787
Reviewed-by: Omer Katz <omerkatz@chromium.org>
Reviewed-by: Anton Bikineev <bikineev@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66958}
Use new API available in ICU65.1 so legacy locales won't be hidden.
Bug: v8:9312,chromium:968269
Change-Id: I6e44501249cdb863ff9b1ab858efdf8908380a82
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2131373
Commit-Queue: Frank Tang <ftang@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66957}
Only run the test when locale 'bn' is supported
Bug: v8:9100
Change-Id: I455d77a7fb7495f1f866211084cdb68fceb8c871
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2130069
Commit-Queue: Frank Tang <ftang@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66956}
The trampoline should never inline the actual iteration method and
always use a full call. As a result, there can be no interesting data
in the redzone.
This allows simplifying as the existence and size of a red zone is platform
dependent.
Bug: chromium:1056170
Change-Id: I38d686b0e60fdcc383c40a45e7a81ec0e91f4d62
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2132788
Reviewed-by: Anton Bikineev <bikineev@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66955}
The tests using the recursive function were broken on non-clang builds
as GCC is able to agressively the function in question and proof that
parameters are not actually needed.
Bug: chromium:1056170
Change-Id: Iacbff766ca9d300c9ae5d16394e205b1883609eb
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2130274
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Anton Bikineev <bikineev@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66952}
Even though the default toolchain for assembly on Windows uses MASM
assemblers, we are not supposed to use them to support Linux/Win
cross-compile.
Bug: chromium:1056170, chromium:1066834
Change-Id: If17dbd68915f843e3fb47584560a4667d5c35bc7
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2132250
Reviewed-by: Anton Bikineev <bikineev@chromium.org>
Reviewed-by: Omer Katz <omerkatz@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66951}
Double literals without dots should still be parsed as double constants,
not unsigned constants. The static_cast would remove the fractional
part, making constants like "1e-15" come out as "0" unsigned constants.
The precise semantics is not spec'ed, so we still consider literals like
"1e1" to be unsigned, and only switch to double if there is a fractional
part.
R=ecmziegler@chromium.org
Bug: chromium:1065635
Change-Id: I0aac018058a149632e0849572d19fdcc7b2af7aa
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2126922
Reviewed-by: Emanuel Ziegler <ecmziegler@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66949}
The ReduceStringPrototypeStartsWith implementation in TurboFan
was doing the CheckString too late, after returning "false" in
case there are no arguments.
Fixed: chromium:1065741
Change-Id: I1016383d65120d3b050e76d6ac41986497af0b8d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2129639
Commit-Queue: Maya Lekova <mslekova@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66948}
JSStoreGlobal can become a call into runtime code (SetProperty)
that inspects the context in order to get the language mode. Thus
always passing the native context is not good enough.
Bug: chromium:1065737
Change-Id: Iba9537cd3de743a0967325acf7900190aa835b5f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2130280
Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
Commit-Queue: Nico Hartmann <nicohartmann@chromium.org>
Auto-Submit: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66946}
This inlines the first set of macros in order reduce an unneccessary
layer of abstraction. This makes the code easier to read and to debug.
R=zhin@chromium.org
Bug: v8:10364
Change-Id: Ia8ccb90c285c365ae5b3d52b6b6912ad1a76d81d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2129532
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66945}
Port a447a44f31https://crrev.com/c/2064226
Original Commit Message:
Since now the IterationBody StackChecks are implicit within JumpLoops,
we are able to eagerly deopt in them. If we do that, whenever we advance
to the next bytecode we don't have to advance to the next literal
bytecode, but instead "advance" in the sense of doing the JumpLoop.
Adding tests that test this advancing for wide and extra wide JumpLoops.
Also, marking JumpLoop as needing source positions since now it has
the ability of causing an interrupt.
Change-Id: Ia435888fbaca8596839aa15dafb8b4e7239981fd
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2119783
Reviewed-by: Santiago Aboy Solanes <solanes@chromium.org>
Commit-Queue: Zhao Jiazhong <zhaojiazhong-hf@loongson.cn>
Cr-Commit-Position: refs/heads/master@{#66944}
Import the most commonly used ValueType kinds as constants into
{LiftoffCompiler}, so that we don't need the fully-qualified accessor on
{ValueType}.
This makes many template instantiations much shorter and hence easier to
read.
Drive-by: Replace break after function by return. This often saves
another line, making macros and switch statements much shorter.
R=zhin@chromium.org
Bug: v8:10364
Change-Id: If78352c2fa6b854989fa82718d0b3478b4d73aad
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2129634
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66943}
- avoid endless recursion with corrupted traces
- speed up page by async bar repainting
- minor tweaks to avoid unnecessary work
- move helper functions to make command line version parse log files
Change-Id: If8ce9cc4093030d648fbc7bbb60e53412e9f7a79
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2115434
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66942}
This is the same cleanup as in the previous CL, but for {EmitBinOpImm}.
This requires a minor change in the name of the emit functions with
immediate, to make them distinguishable from the emit functions with two
registers. We just append an "i" to the functions with immediate.
R=zhin@chromium.org
Bug: v8:10364
Change-Id: Ie3732a956698368a5f1fbe67334a13014cd2f354
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2129631
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66941}
The same issue has been fixed in Chromium [1] by Richard Townsend.
It seems that cl needs to be applied in V8 as well.
[1] https://chromium-review.googlesource.com/c/chromium/src/+/1593363
Also add self to authors file.
Bug: v8:10365
Change-Id: Ic38b18392263c2a89f207013ec61718418d5f132
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2130126
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66940}
If "use asm" is used inside a "function*" or async function, it should
bail out.
Drive-by: Minor cleanup in {Runtime_InstantiateAsmJs}.
R=ecmziegler@chromium.org
Bug: chromium:1065852
Change-Id: Ice48126b803a30c4b4ff7b5ae22df85a3f36198a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2126920
Reviewed-by: Emanuel Ziegler <ecmziegler@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66939}
Liftoff has lots of macros that just convert between {LiftoffRegister}
and either {Register} or {DoubleRegister}.
This CL avoids most of these lambdas by passing the original assembler
function to {EmitUnOp} and {EmitBinOp}, and converting the register
types only when calling the respective function.
This makes the code in many macros a lot shorter, and might allow us to
eliminate many macros and just inline their code.
R=zhin@chromium.org
Bug: v8:10364
Change-Id: I8b7dbb19e367d33181d94472ab422a0a50786449
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2129629
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66938}