Commit Graph

36812 Commits

Author SHA1 Message Date
machenbach
32c0dff263 Revert of Internalize strings in-place (patchset #16 id:300001 of https://codereview.chromium.org/2549773002/ )
Reason for revert:
gc stress failures:
https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20gc%20stress/builds/8024

Original issue's description:
> Internalize strings in-place
>
> using newly introduced ThinStrings, which store a pointer to the actual,
> internalized string they represent.
>
> BUG=v8:4520
>
> Review-Url: https://codereview.chromium.org/2549773002
> Cr-Commit-Position: refs/heads/master@{#42168}
> Committed: af51befe69

TBR=ishell@chromium.org,hpayer@chromium.org,bmeurer@chromium.org,jkummerow@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:4520

Review-Url: https://codereview.chromium.org/2621913002
Cr-Commit-Position: refs/heads/master@{#42170}
2017-01-10 11:33:04 +00:00
marja
b233776208 PreParsing inner funcs: make scope analysis even more complete.
This adds tracking the following:
- Let / var declarations in for loops

BUG=v8:5501, v8:5516

Review-Url: https://codereview.chromium.org/2616393002
Cr-Commit-Position: refs/heads/master@{#42169}
2017-01-10 11:14:53 +00:00
jkummerow
af51befe69 Internalize strings in-place
using newly introduced ThinStrings, which store a pointer to the actual,
internalized string they represent.

BUG=v8:4520

Review-Url: https://codereview.chromium.org/2549773002
Cr-Commit-Position: refs/heads/master@{#42168}
2017-01-10 10:58:03 +00:00
machenbach
d1f347fa54 [foozzie] Add correctness-fuzzer-archive builder's mb config
Related to:
https://chromium-review.googlesource.com/c/426618

BUG=chromium:673246
NOTRY=true
NOTREECHECKS=true
TBR=tandrii@chromium.org,jochen@chromium.org

Review-Url: https://codereview.chromium.org/2628483003
Cr-Commit-Position: refs/heads/master@{#42167}
2017-01-10 10:54:04 +00:00
machenbach
0bdb469007 [foozzie] Add correctness fuzzer resources to build output
This adds the correctness fuzzer harness files to the output
directory guarded by a gn arg.

The switch will be turned on on the builder uploading builds to
clusterfuzz.

BUG=chromium:673246
NOTRY=true
TBR=tandrii@chromium.org,jochen@chromium.org

Review-Url: https://codereview.chromium.org/2623843002
Cr-Commit-Position: refs/heads/master@{#42166}
2017-01-10 10:19:21 +00:00
marja
cd9ec3d29c Fix irregexp build after r42140
BUG=v8:5402

Review-Url: https://codereview.chromium.org/2628473003
Cr-Commit-Position: refs/heads/master@{#42165}
2017-01-10 10:16:47 +00:00
clemensh
4751959d1e [wasm] Remove obsolete comment
BUG=v8:5766
R=ahaas@chromium.org
NOTRY=true

Review-Url: https://codereview.chromium.org/2622863002
Cr-Commit-Position: refs/heads/master@{#42164}
2017-01-10 10:00:49 +00:00
ahaas
a2081b2d7c [wasm] The exports property of a wasm instance should always exist
R=clemensh@chromium.org
BUG=chromium:663994

Review-Url: https://codereview.chromium.org/2622563002
Cr-Commit-Position: refs/heads/master@{#42163}
2017-01-10 09:55:10 +00:00
bbudge
0df234b0ed Revert of [WASM] Fix failing Wasm SIMD F32x4 tests. (patchset #7 id:130001 of https://codereview.chromium.org/2594043002/ )
Reason for revert:
F32x4Add / Sub are still failing. I'll have to investigate on ARM hardware when I get back.

Original issue's description:
> [WASM] Fix failing Wasm SIMD F32x4 tests.
> - Perform lane checks using FP compare instead of reinterpret casts. 0 and -0
> will be different under I32 compare.
> - Some arithmetic operations can generate NaN results, such as adding -Inf
> and +Inf. Skip these tests until we have a way to do more sophisticated
> FP comparisons in the SIMD tests.
> - Eliminate a redundant F32x4 parameter for FP SIMD vector checking. We will only have this one FP type.
>
> LOG=N
> BUG=v8:4124
>
> Review-Url: https://codereview.chromium.org/2594043002
> Cr-Commit-Position: refs/heads/master@{#42154}
> Committed: 5560bbb498

TBR=titzer@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:4124

Review-Url: https://codereview.chromium.org/2624713002
Cr-Commit-Position: refs/heads/master@{#42162}
2017-01-10 09:34:32 +00:00
bmeurer
a3859e48c3 [crankshaft] Also inline Math.ceil.
Inline calls to Math.ceil(x) as -Math.floor(-x) via the existing fast
path in Crankshaft.

R=ishell@chromium.org
BUG=v8:5782

Review-Url: https://codereview.chromium.org/2621903002
Cr-Commit-Position: refs/heads/master@{#42161}
2017-01-10 08:33:51 +00:00
jgruber
ca4d8136ee [async-await] Remove call indirection in Create and Reject
Instead of exporting/importing PromiseCreate and RejectPromise and going
through them, just call the runtime function / the TF builtin on the
context directly.

BUG=v8:5639

Review-Url: https://codereview.chromium.org/2599003002
Cr-Commit-Position: refs/heads/master@{#42160}
2017-01-10 08:06:48 +00:00
v8-autoroll
9691f6acbd Update V8 DEPS.
Rolling v8/build: 87eca92..da5025b

Rolling v8/third_party/catapult: 487c2d0..886ff59

Rolling v8/tools/clang: d150023..b644731

TBR=machenbach@chromium.org,vogelheim@chromium.org,hablich@chromium.org

Review-Url: https://codereview.chromium.org/2619903003
Cr-Commit-Position: refs/heads/master@{#42159}
2017-01-10 04:20:54 +00:00
bradnelson
be10e68f39 Forbid non-locals/keyed-property calls to allow interleaved compile.
Deferred function call validation is required to support out of order
asm.js function declaration. Unfortunately, since we've started interleaving
validation and asm-wasm building, we don't check names are resolved until
the end.
Fortunately, undefined names can be detected from their CallType.
Check this at asm-typer time.

BUG=676797
R=aseemgarg@chromium.org,titzer@chromium.org

Review-Url: https://codereview.chromium.org/2615443003
Cr-Commit-Position: refs/heads/master@{#42158}
2017-01-10 04:07:16 +00:00
zhengxing.li
0dde3045ad X87: [FeedbackVector] Infrastructure for literal arrays in the vector.
port 38602f1ff5 (r42146)

  original commit message:
  This changes the NewClosure interface descriptor, but ignores
  the additional vector/slot arguments for now. The feedback vector
  gets larger, as it holds a space for each literal array. A follow-on
  CL will constructively use this space.

BUG=

Review-Url: https://codereview.chromium.org/2616403007
Cr-Commit-Position: refs/heads/master@{#42157}
2017-01-10 04:04:53 +00:00
gsathya
8d19859c9e [pattern rewriter] Dont return value from void function
R=adamk@chromium.org

Review-Url: https://codereview.chromium.org/2626493002
Cr-Commit-Position: refs/heads/master@{#42156}
2017-01-10 03:07:32 +00:00
danno
8e19a2c497 [stubs] Ensure generated CalculateNewElementsCapacity is identical to runtime version
The original TF port didn't maintain the same semantics as the CS/runtime implementation, and in fact introduced a bug that grew capacity too slowly on
32-bit platforms.

R=ishell@chromium.org
LOG=N

Review-Url: https://codereview.chromium.org/2617393002
Cr-Commit-Position: refs/heads/master@{#42155}
2017-01-10 01:48:11 +00:00
bbudge
5560bbb498 [WASM] Fix failing Wasm SIMD F32x4 tests.
- Perform lane checks using FP compare instead of reinterpret casts. 0 and -0
will be different under I32 compare.
- Some arithmetic operations can generate NaN results, such as adding -Inf
and +Inf. Skip these tests until we have a way to do more sophisticated
FP comparisons in the SIMD tests.
- Eliminate a redundant F32x4 parameter for FP SIMD vector checking. We will only have this one FP type.

LOG=N
BUG=v8:4124

Review-Url: https://codereview.chromium.org/2594043002
Cr-Commit-Position: refs/heads/master@{#42154}
2017-01-09 23:11:17 +00:00
bbudge
ab14a13601 [ARM] Add get_q_register, set_q_register overloads for NEON instructions.
Adds overloads for float, int32, int16, uint16, int8 and uint8 arrays.

LOG=N
BUG=v8:4124

Review-Url: https://codereview.chromium.org/2619223002
Cr-Commit-Position: refs/heads/master@{#42153}
2017-01-09 23:10:06 +00:00
littledan
788c96a955 [intl] Remove redundant type checking system
Previously, the Intl implementation tracked types two ways:
 - In the intl_initialized_marker_symbol
 - In various named properties of the intl_impl_object_symbol value

As far as I can tell, these will never disagree with each other,
modulo bugs in Intl itself. This patch removes the second type
checking system.

This reland includes a fixed type check for
Intl.DateTimeFormat.prototype.formatToParts , which is the only Intl
method which is not bound. All future methods will follow this
pattern.

The second reland ensures that a newly inserted test is only run
if Intl is present.

BUG=v8:5751,chromium:677055, v8:4962
CQ_INCLUDE_TRYBOTS=master.tryserver.v8:v8_linux_noi18n_rel_ng

TBR=yangguo@chromium.org

Review-Url: https://codereview.chromium.org/2623683002
Cr-Commit-Position: refs/heads/master@{#42152}
2017-01-09 22:24:57 +00:00
rmcilroy
f377d9f364 [TurboFan] Reduce zone memory usage in register-allocator-verifier.
Avoid allocating local objects in the outer zone, instead create a new inner zone
in ValidatePendingAssessment.

BUG=v8:5796

Review-Url: https://codereview.chromium.org/2617413002
Cr-Commit-Position: refs/heads/master@{#42151}
2017-01-09 18:32:45 +00:00
machenbach
6d82e6182b [foozzie] Fix path to metadata
This makes sure the metadata is found during minimization. Also renames
the test files to fit the naming pattern.

BUG=chromium:673246
NOTRY=true
TBR=tandrii@chromium.org,mbarbella@chromium.org

Review-Url: https://codereview.chromium.org/2622653002
Cr-Commit-Position: refs/heads/master@{#42150}
2017-01-09 18:19:40 +00:00
adamk
2b961cec80 Tiny fix for sloppy function map 'name' descriptor attributes
I can't actually figure out how to trigger a change in behavior here,
but it looks like we should be passing the same attributes both to
the accessor and the descriptor.

R=verwaest@chromium.org

Review-Url: https://codereview.chromium.org/2616843005
Cr-Commit-Position: refs/heads/master@{#42149}
2017-01-09 18:17:19 +00:00
danno
5c15115e8e [x64] Fix code generation of testw and add tests
BUG=v8:5798
R=epertoso@chromium.org
LOG=N

Review-Url: https://codereview.chromium.org/2619263002
Cr-Commit-Position: refs/heads/master@{#42148}
2017-01-09 18:11:20 +00:00
rdevlin.cronin
e6e968d0e6 Fix String16's move constructor
String16 had a pseudo move constructor that took a const String16&&. The
problem with this is that the point of moving objects is the ability to
clobber the underlying data. If we look at this particular case, the
move ctor tried to then std::move the underlying std::basic_string<>;
this results in passing a const std::basic_string<>&& to the
basic_string ctor. This resolves to the const std::basic_string<>&
*copy* ctor. So in the end, we haven't moved anything.

Fix this by taking a mutable rvalue reference that allows the moving to
work as expected.

BUG=None

Review-Url: https://codereview.chromium.org/2616973002
Cr-Commit-Position: refs/heads/master@{#42147}
2017-01-09 16:15:50 +00:00
mvstanton
38602f1ff5 [FeedbackVector] Infrastructure for literal arrays in the vector.
This changes the NewClosure interface descriptor, but ignores
the additional vector/slot arguments for now. The feedback vector
gets larger, as it holds a space for each literal array. A follow-on
CL will constructively use this space.

BUG=v8:5456

Review-Url: https://codereview.chromium.org/2614373002
Cr-Commit-Position: refs/heads/master@{#42146}
2017-01-09 15:31:00 +00:00
bjaideep
e7fc42796c s390: Fix FunctionBodyDecoderTest to compile with gcc4.8.5
GCC4.8.5 on s390 emits warning "array subscript is above array bounds"
for line "code[pos + 1] = kLocalVoid;". The warning seems to be
correct because code[sizeof(code)] should be out of bounds.
I'm suggesting to run the loop till "sizeof(code) - 1" which GCC(4.8.5)
agrees with. Although this means the last byte is missed, but it should
be safe to do since the last few bytes are "0xb" (kExprEnd) and the
offending statement is only run when byte=kExprBlock.

R=titzer@chromium.org, mstarzinger@chromium.org, bradnelson@chromium.org
BUG=
LOG=N

Review-Url: https://codereview.chromium.org/2619063002
Cr-Commit-Position: refs/heads/master@{#42145}
2017-01-09 15:20:13 +00:00
rmcilroy
63952fd498 [Interpreter] Add leszeks@ to OWNERS
Review-Url: https://codereview.chromium.org/2622453003
Cr-Commit-Position: refs/heads/master@{#42144}
2017-01-09 14:33:03 +00:00
verwaest
6e17ea901a [counters] Add counter scopes for the Compiler::Analyze phases
BUG=

Review-Url: https://codereview.chromium.org/2579243003
Cr-Commit-Position: refs/heads/master@{#42143}
2017-01-09 14:22:07 +00:00
clemensh
02ae44b77d Forbid storing objects in new space in Code header
If you try to store an object in new space to the Code header, it will
be added to the store buffer, and a DCHECK will fail later, since Code
objects should never occur in the store buffer.

This CL adds DCHECKs to catch such assignments early. Once we handle
this case better, they can be removed again.

R=mstarzinger@chromium.org, ulan@chromium.org
BUG=chromium:674535

Review-Url: https://codereview.chromium.org/2587073002
Cr-Commit-Position: refs/heads/master@{#42142}
2017-01-09 13:58:40 +00:00
titzer
7ed3c4d791 [wasm] Remove non-standard kExprI8Const bytecode
R=clemensh@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2595733003
Cr-Commit-Position: refs/heads/master@{#42141}
2017-01-09 13:57:26 +00:00
marja
9c7b87269c include fixing: api.h shouldn't include objects-inl.h
Downside: this adds all kinds of weird includes in the .cc files.

(See design doc linked in the bug.)

BUG=v8:5402

Review-Url: https://codereview.chromium.org/2622503002
Cr-Commit-Position: refs/heads/master@{#42140}
2017-01-09 13:43:28 +00:00
verwaest
7256d90a35 [ignition] Prefill the constant array with holes to avoid needing to write padding holes
BUG=

Review-Url: https://codereview.chromium.org/2586513002
Cr-Commit-Position: refs/heads/master@{#42139}
2017-01-09 13:42:01 +00:00
cbruni
09167bf6cd Add Object::IsNullOrUndefined(Isolate*) helper method
The pattern IsNull(isolate) || IsUndefined(isolate) is used in many places all
over the code base.

Review-Url: https://codereview.chromium.org/2601503002
Cr-Commit-Position: refs/heads/master@{#42138}
2017-01-09 13:40:51 +00:00
yangguo
e24f3f3bd5 Use map to distinguish type feedback vectors.
R=mvstanton@chromium.org, ulan@chromium.org
BUG=v8:5808

Review-Url: https://codereview.chromium.org/2617363003
Cr-Commit-Position: refs/heads/master@{#42137}
2017-01-09 12:27:04 +00:00
franzih
7c7e188885 [turbofan] Remove eager checkpoint.
ToName, ToObject, and ToNumber do not need an
eager checkpoint.

BUG=

Review-Url: https://codereview.chromium.org/2623473002
Cr-Commit-Position: refs/heads/master@{#42136}
2017-01-09 11:35:18 +00:00
jkummerow
fab14341f5 [cleanup] Refactor builtins-math.cc to use TF_BUILTIN macro
Review-Url: https://codereview.chromium.org/2614773004
Cr-Commit-Position: refs/heads/master@{#42135}
2017-01-09 10:20:20 +00:00
jkummerow
f91e12cc09 [cleanup] Refactor builtins-string.cc to use TF_BUILTIN macro
Review-Url: https://codereview.chromium.org/2614973003
Cr-Commit-Position: refs/heads/master@{#42134}
2017-01-09 10:19:10 +00:00
machenbach
b606e1b6f4 [test] Skip flaky test under tsan
BUG=v8:5807
NOTRY=true
TBR=clemensh@chromium.org,ahaas@chromium.org

Review-Url: https://codereview.chromium.org/2620653002
Cr-Commit-Position: refs/heads/master@{#42133}
2017-01-09 10:14:52 +00:00
yangguo
081193d5b1 [serializer] pass internal fields deserializer callback as argument.
Background to this is that blink needs to be able to pass different internal
fields deserialization callbacks for individual to-be-deserialized contexts.

R=jochen@chromium.org, peria@chromium.org
BUG=chromium:617892

Review-Url: https://codereview.chromium.org/2619203002
Cr-Commit-Position: refs/heads/master@{#42132}
2017-01-09 10:12:04 +00:00
franzih
4805790c60 [ast] Delete unused variables.
BUG=

Review-Url: https://codereview.chromium.org/2596803002
Cr-Commit-Position: refs/heads/master@{#42131}
2017-01-09 09:51:30 +00:00
clemensh
fc327e2308 [asm.js] [wasm] Store function start position for stack check
We did not associate any position to the stack check in the wasm
function prologue, hence a check failed later when trying to map the
non-existent position to the asm.js source position.

With this CL, we add a mapping to the source position table, mapping
the stack check call to byte offset 0 (which is distinct from any valid
instruction position). Also, we add another entry to the asm.js source
position sidetable, mapping byte offset 0 to the start source position
of the function body.

R=titzer@chromium.org, ahaas@chromium.org
BUG=chromium:677685

Review-Url: https://codereview.chromium.org/2609363004
Cr-Commit-Position: refs/heads/master@{#42130}
2017-01-09 09:43:04 +00:00
marja
d17558bc49 PreParsing inner funcs: make scope analysis more complete.
This adds tracking the following:
- Declarations created by catch (potentially destructuring)
- Declarations created by for-each (potentially destructuring)
- Class declarations

BUG=v8:5501, v8:5516

Review-Url: https://codereview.chromium.org/2617923003
Cr-Commit-Position: refs/heads/master@{#42129}
2017-01-09 09:41:54 +00:00
jgruber
9e65ecd957 [regexp] Remove IsRegExp intrinsic
The two remaining uses of this intrinsic in debug.js and mirrors.js now
simply rely on the runtime function.

BUG=v8:5339

Review-Url: https://codereview.chromium.org/2591923003
Cr-Original-Commit-Position: refs/heads/master@{#41892}
Committed: c9cb94a06f
Review-Url: https://codereview.chromium.org/2591923003
Cr-Commit-Position: refs/heads/master@{#42128}
2017-01-09 09:34:48 +00:00
jgruber
1c26e0a493 [js-perf-test] Specify AsyncAwait tests in JSTests.json
BUG=v8:5805

Review-Url: https://codereview.chromium.org/2619753002
Cr-Commit-Position: refs/heads/master@{#42127}
2017-01-09 09:30:25 +00:00
zhengxing.li
8b900b8ba9 X87: Revert of [turbofan] Improve codegen for 8- and 16-bit memory comparisons on Intel platforms (patchset #3 id:40001 of https://codereview.chromium.org/2605863002/ ).
port c16ca32e5f (r42092)

  original commit message:
  Reason for revert:
  Breaks wasm benchmark (http://crbug.com/v8/5798).

  Original issue's description:
  > [turbofan] Improve codegen for 8- and 16-bit memory comparisons on Intel platforms
  >
  > Recognize and emit in-memory comparisons of 8-bit and 16-bit values with
  > immediate values that fit.
  >
  > LOG=N
  > R=epertoso@chromium.org
  >
  > Review-Url: https://codereview.chromium.org/2605863002
  > Cr-Commit-Position: refs/heads/master@{#41971}
  > Committed: be11812c53

BUG=

Review-Url: https://codereview.chromium.org/2622463002
Cr-Commit-Position: refs/heads/master@{#42126}
2017-01-09 09:06:05 +00:00
marja
bd62841eb9 Preparsing inner funcs: Update tests.
1) Fix confusion between for of and for in.

2) If a for loop doesn't declare its variables, no new variables
are introduced (the outer scope variables are used).

3) Add more cases for destructuring for and destructuring catch.

BUG=v8:5501, v8:5516

Review-Url: https://codereview.chromium.org/2614023004
Cr-Commit-Position: refs/heads/master@{#42125}
2017-01-09 08:53:14 +00:00
jochen
65537684b6 Add ability to enqueue SharedFunctionInfos so they can run on bg threads
If this is possible at all, we need to at least do the first step
(prepare to parse).

BUG=v8:5215
R=vogelheim@chromium.org,marja@chromium.org

Review-Url: https://codereview.chromium.org/2610173004
Cr-Commit-Position: refs/heads/master@{#42124}
2017-01-09 08:52:04 +00:00
bmeurer
5f418c8a2d [crankshaft] Properly deal with null prototype.
Don't assume that the prototype of an object is always a JSObject when
inlining the known receiver map case for abstract relational comparison.

BUG=chromium:679202
R=ishell@chromium.org

Review-Url: https://codereview.chromium.org/2621583002
Cr-Commit-Position: refs/heads/master@{#42123}
2017-01-09 08:47:43 +00:00
bmeurer
b36b8395e8 [turbofan] Optimize strict equality with unique input.
If one input to JSStrictEqual/JSNotStrictEqual is Unique (except
InternalizedString) or the hole, then we can turn that into a
direct pointer comparison, as such values are only equal to exactly
the same unique value.

BUG=v8:5267
R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/2611363002
Cr-Commit-Position: refs/heads/master@{#42122}
2017-01-09 06:40:23 +00:00
v8-autoroll
b0fab645b7 Update V8 DEPS.
Rolling v8/third_party/catapult: 4a7b232..487c2d0

TBR=machenbach@chromium.org,vogelheim@chromium.org,hablich@chromium.org

Review-Url: https://codereview.chromium.org/2619713002
Cr-Commit-Position: refs/heads/master@{#42121}
2017-01-08 04:22:47 +00:00