Commit Graph

37128 Commits

Author SHA1 Message Date
mtrofin
777057763c [wasm] JSAPI conformance: instance.exports has null prototype.
BUG=v8:5885

Review-Url: https://codereview.chromium.org/2649163004
Cr-Commit-Position: refs/heads/master@{#42636}
2017-01-24 19:00:36 +00:00
gsathya
a76e9f38ba [ESnext] stage object rest/spread properties
BUG=v8:5549

Review-Url: https://codereview.chromium.org/2653643004
Cr-Commit-Position: refs/heads/master@{#42635}
2017-01-24 17:25:28 +00:00
titzer
68efecff60 [wasm] Implement WebAssembly.Module.customSections.
R=ahaas@chromium.org,rossberg@chromium.org
BUG=chromium:575167

Review-Url: https://codereview.chromium.org/2626263004
Cr-Commit-Position: refs/heads/master@{#42634}
2017-01-24 15:23:02 +00:00
rmcilroy
7524e523d7 Revert "[Parse] ParseInfo owns the parsing Zone."
Speculative reason for issue 684481.

BUG=chromium:684481
TBR=marja@chromium.org,mstarzinger@chromium.org,ahaas@chromium.org,verwaest@chromium.org,

Original issue's description:
> [Parse] ParseInfo owns the parsing Zone.
>
> Moves ownership of the parsing Zone to ParseInfo with a shared_ptr. This is
> in preperation for enabling background compilation jobs for inner functions
> share the AST in the outer-function's parse zone memory (read-only), with the
> and zone being released when all compilation jobs have completed.
>
> BUG=v8:5203, v8:5215
> Review-Url: https://codereview.chromium.org/2632123006
> Cr-Commit-Position: refs/heads/master@{#42562}
> Committed: 4b0101d369

Review-Url: https://codereview.chromium.org/2648383005
Cr-Commit-Position: refs/heads/master@{#42633}
2017-01-24 14:38:13 +00:00
petermarshall
f9367847b0 [Turbofan] Implement call with spread bytecode in assembly code.
We can share almost all of the architecture-specific builtin code with super-call-with-spread.

Info to port-writers: The code in CheckSpreadAndPushToStack has changed slightly from what was in Generate_ConstructWithSpread, in that we take the length of the spreaded parameters from the JSArray rather than the FixedArray backing store.

BUG=v8:5511

Review-Url: https://codereview.chromium.org/2649143002
Cr-Commit-Position: refs/heads/master@{#42632}
2017-01-24 14:37:01 +00:00
marja
4aedeb1bd5 objects.h splitting: include less objects/ files.
Using a Handle<Foo> as a member doesn't require including foo.h

R=mstarzinger@chromium.org
BUG=v8:5402

Review-Url: https://codereview.chromium.org/2650973003
Cr-Commit-Position: refs/heads/master@{#42631}
2017-01-24 13:24:53 +00:00
tebbi
e225251f25 [tubofan] teach escape analysis about ObjectIsNonCallable
R=mstarzinger@chromium.org, bmeurer@chromium.org

BUG=chromium:669242

Review-Url: https://codereview.chromium.org/2645273003
Cr-Commit-Position: refs/heads/master@{#42630}
2017-01-24 13:18:23 +00:00
titzer
a920c0d92b [wasm] Errors in names section do not fail the whole module.
R=ahaas@chromium.org
BUG=v8:5882

Review-Url: https://codereview.chromium.org/2657463003
Cr-Commit-Position: refs/heads/master@{#42629}
2017-01-24 13:13:26 +00:00
mlippautz
4894bbd439 [profiler] Query retainer infos from embedder instead of using object grouping
BUG=chromium:679724

Review-Url: https://codereview.chromium.org/2627033002
Cr-Commit-Position: refs/heads/master@{#42628}
2017-01-24 12:50:47 +00:00
marja
db1de41a62 [parser] Refactor ParseForStatement.
It was a scary function which handled all possible old-fashioned and
for-each statements at one go. Split it to multiple smaller functions
and made the top level logic clearer.

BUG=

Review-Url: https://codereview.chromium.org/2645353002
Cr-Commit-Position: refs/heads/master@{#42627}
2017-01-24 10:17:02 +00:00
machenbach
f94c7e8f1a [foozzie] Disable optimizations for typed float arrays.
This disables optimizations when using typed float arrays in
correctness fuzzer test cases. Otherwise, different NaN patterns
in float typed arrays might lead to different observations when
using the buffer in an int array view.

BUG=chromium:683579
NOTRY=true
TBR=Jarin, mvstanton, Igor Sheludko

Review-Url: https://codereview.chromium.org/2649923008
Cr-Commit-Position: refs/heads/master@{#42626}
2017-01-24 10:15:55 +00:00
marja
29ede2bf0e test-parsing/NoPessimisticContextAllocation: add a missing test
The "sloppy eval in default param" cases will be useful for the future
tests which assert that parser and preparser produce the same scopes.

BUG=v8:5501, v8:5516

Review-Url: https://codereview.chromium.org/2644333002
Cr-Commit-Position: refs/heads/master@{#42625}
2017-01-24 10:14:45 +00:00
clemensh
3dea55b413 [wasm] Implement stepping in wasm code
Implement stepping by remembering the current step action in the wasm
interpreter handle in WasmDebugInfo, and using it when continuing
execution in the interpreter.
The control flow is as follows: After module compilation, the user sets
a breakpoint in wasm. The respective function is redirected to the
interpreter and the breakpoint is set on the interpreter. When it is
hit, we notify all debug event listeners, which might prepare stepping.
When returning from these listeners, before continuing execution, we
check whether stepping was requested and continue execution in the
interpreter accordingly.

Stepping from Wasm to JS and vice versa will be implemented and tested
in a follow-up CL. Testing this requires breakpoints and stepping in
Wasm to be exposed via the inspector interface, such that we can write
an inspector test. This mixed JS-Wasm-execution is hard to set up in a
cctest.

R=titzer@chromium.org, yangguo@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2649533002
Cr-Commit-Position: refs/heads/master@{#42624}
2017-01-24 10:13:33 +00:00
ahaas
d9253a2f7c [wasm] Change the constant kV8MaxWasmTableSize to a command line flag.
Similar to the maximum memory size this limit caused problems for
the fuzzer due to oom issues. With the command line flag we can limit
the maximum table size for the fuzzer.

R=titzer@chromium.org

Review-Url: https://codereview.chromium.org/2648223004
Cr-Commit-Position: refs/heads/master@{#42623}
2017-01-24 10:12:22 +00:00
titzer
e9b22dde28 [wasm] Do not patch memory references in imported functions.
BUG=v8:5860
R=rossberg@chromium.org

Review-Url: https://codereview.chromium.org/2653533003
Cr-Commit-Position: refs/heads/master@{#42622}
2017-01-24 09:43:57 +00:00
jarin
dd310b4341 [crankshaft] Fix string addition to check for max length of cons string.
BUG=chromium:678917

Review-Url: https://codereview.chromium.org/2653623002
Cr-Commit-Position: refs/heads/master@{#42621}
2017-01-24 09:35:56 +00:00
mvstanton
d287c81969 [TypeFeedbackVector] DeclareGlobals needs a literals array
[RELAND with one change: until literal arrays are rooted in the outer
feedback vector (coming in the next days), the runtime-scope.cc change
is held off.]

When a function is declared in global scope, the closure is created
by the DeclareGlobals runtime service. It needs a pointer to the
literals array, already allocated in the feedback vector. This
fixes a bug where it's behavior wasn't in sync with CreateClosure,
which accepts the literals from the vector.

This enables a follow-on performance improvement in the CompileLazy
builtin.

BUG=680637

Review-Url: https://codereview.chromium.org/2634283003
Cr-Commit-Position: refs/heads/master@{#42620}
2017-01-24 08:46:40 +00:00
machenbach
09163d71bd [foozzie] Mock out stack traces
BUG=chromium:683494
NOTRY=true
TBR=yangguo@chromium.org, jarin@chromium.org

Review-Url: https://codereview.chromium.org/2651713005
Cr-Commit-Position: refs/heads/master@{#42619}
2017-01-24 08:18:02 +00:00
mtrofin
8da82d30b8 [wasm] No need to use multiple inheritance for ModuleBytesEnv
Chromium coding standard
(https://chromium.googlesource.com/chromium/src/+/master/styleguide/c++/c++.md#Multiple-inheritance)

In this case, a structure associating the 2 values is sufficient.

BUG=

Review-Url: https://codereview.chromium.org/2651903002
Cr-Commit-Position: refs/heads/master@{#42618}
2017-01-24 07:11:01 +00:00
zhengxing.li
1652c8063a X87: Split some SharedFunctionInfo's compiler hints off into debugger hints.
port 3a9152ece7 (r42594)

  original commit message:
  We are planning to add a few more debugger related bits, and are running
  out of compiler hints bits. The new bit field is going to be part of the
  debug info struct. If the debug info is not available, we store the bit
  field in its place on the shared function info.

BUG=

Review-Url: https://codereview.chromium.org/2649893004
Cr-Commit-Position: refs/heads/master@{#42617}
2017-01-24 06:30:07 +00:00
bradnelson
e53f6469d9 [wasm][asm.js] Allow asm.js->wasm codegen in unsafe-eval situations.
A recent change to disallow wasm compilation in contexts where
CSP unsafe-eval would disallow eval also ended up banning asm.js there:
https://codereview.chromium.org/2646713002

This ends up banning non-evaled asm.js even in some places it should be
allowed.

NOTE: Although asm.js code converted to wasm generates an intermediate wasm
module. asm.js code evaled in a disallowed context can't even get
that far (as it's stoped at the eval site).

BUG=683867
R=mtrofin@chromium.org,titzer@chromium.org,adamk@chromium.org

Review-Url: https://codereview.chromium.org/2656463004
Cr-Commit-Position: refs/heads/master@{#42616}
2017-01-24 05:00:35 +00:00
v8-autoroll
23442ed450 Update V8 DEPS.
Rolling v8/build: 0081085..dbe38ca

Rolling v8/buildtools: cb12d6e..8e94621

Rolling v8/third_party/catapult: 49e3f62..e1e778d

Rolling v8/tools/clang: fa8cd67..58fecbe

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

Review-Url: https://codereview.chromium.org/2649983004
Cr-Commit-Position: refs/heads/master@{#42615}
2017-01-24 04:20:58 +00:00
kozyatinskiy
ac50c79a3e [inspector] implemented blackboxing inside v8
V8 has internal mechanism to ignore steps and breaks inside internal scripts, in this CL it's reused for blackboxing implementation.
Advantages:
- much faster blackboxing implementation (before we at least wrap and collect current call stack for each step),
- get rid of StepFrame action and potential pause in blackboxed code after N StepFrame steps,
- simplification of debugger agent logic.
Disadvtanges:
- currently when user was paused in blackboxed code (e.g. on breakpoint) and then makes step action, debugger ignores blackboxed state of the script and allows to use step actions as usual - this behavior is regressed, we still able to support it on frontend side.

Current state and proposed changes for blackboxing: https://docs.google.com/document/d/1hnzaXPAN8_QC5ENxIgxgMNDbXLraM_OXT73rAyijTF8/edit?usp=sharing

BUG=v8:5842
R=yangguo@chromium.org,dgozman@chromium.org,alph@chromium.org

Review-Url: https://codereview.chromium.org/2633803002
Cr-Commit-Position: refs/heads/master@{#42614}
2017-01-24 01:50:25 +00:00
gsathya
d90e6e12e6 [parser] Throw error when there are too many excluded properties
Check that number of properties < Code:kMaxArguments when object
destructuring with a rest property otherwise throw an error.

BUG=v8:5549

Review-Url: https://codereview.chromium.org/2650863002
Cr-Commit-Position: refs/heads/master@{#42613}
2017-01-24 00:30:35 +00:00
mattloring
a5913c9a8e [ffi] Translation + test for int32
Also introduces FFIType separate from MachineType for express ffi
signatures.

BUG=v8:4456

Review-Url: https://codereview.chromium.org/2639163004
Cr-Commit-Position: refs/heads/master@{#42612}
2017-01-23 23:52:52 +00:00
binji
6eba6b4b89 Add Isolate parameter to disallow Atomics.wait
Atomics.wait is a function which may block, which is not allowed on the
main thread. Since V8 doesn't know whether a particular isolate is the
"main thread", this CL adds an option to Isolate::CreateParams to choose
whether this function is allowed.

Review-Url: https://codereview.chromium.org/2642293002
Cr-Commit-Position: refs/heads/master@{#42611}
2017-01-23 22:06:12 +00:00
bbudge
67244dcef1 [ARM] Add Neon shift instructions vshl, vshr.
LOG=N
BUG=v8:4124

Review-Url: https://codereview.chromium.org/2629223005
Cr-Commit-Position: refs/heads/master@{#42610}
2017-01-23 18:24:27 +00:00
ishell
f9f5fc31fd Access double fields in C++ as uint64_t fields to preserve signaling bit of a NaN.
Manipulating the signaling NaN used for the hole and uninitialized double
field sentinel in C++, e.g. with bit_cast or HeapNumber::value()/set_value(),
will change its value on ia32 (the x87 stack is used to return values and
stores to the stack silently clear the signalling bit).

BUG=v8:5495

Review-Url: https://codereview.chromium.org/2652553003
Cr-Commit-Position: refs/heads/master@{#42609}
2017-01-23 18:18:48 +00:00
bjaideep
d80781442f PPC/s390: Split some SharedFunctionInfo's compiler hints off into debugger hints.
Port 3a9152ece7

Original Commit Message:

    We are planning to add a few more debugger related bits, and are running
    out of compiler hints bits. The new bit field is going to be part of the
    debug info struct. If the debug info is not available, we store the bit
    field in its place on the shared function info.

R=yangguo@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=
LOG=N

Review-Url: https://codereview.chromium.org/2653673002
Cr-Commit-Position: refs/heads/master@{#42608}
2017-01-23 17:58:15 +00:00
rossberg
fc44a1d9ca [wasm] Check segment bounds beforehand
Also fixes check for table segments to be performed against actual size not declared one.

Makes us pass memory.wast and linking.wast tests (modulo issue 5860).

R=titzer@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2649553002
Cr-Commit-Position: refs/heads/master@{#42607}
2017-01-23 17:21:39 +00:00
jarin
6d1894e4f4 [deoptimizer] Materialize string iterators.
BUG=chromium:683617

Review-Url: https://codereview.chromium.org/2651553003
Cr-Commit-Position: refs/heads/master@{#42606}
2017-01-23 16:46:42 +00:00
jkummerow
a962247b5b [regexp] Fix StringCharacterPosition for ThinStrings
BUG=chromium:683515

Review-Url: https://codereview.chromium.org/2654433003
Cr-Commit-Position: refs/heads/master@{#42605}
2017-01-23 16:27:35 +00:00
clemensh
5582100308 Revert of [wasm] Turn on trap-if by default. (patchset #1 id:1 of https://codereview.chromium.org/2647323002/ )
Reason for revert:
gc-stress failures

Original issue's description:
> [wasm] Turn on trap-if by default.
>
> This CL turns on trap-if by default, and it changes the tests so that
> traps in the cctests are also tested without trap-if.
>
> R=titzer@chromium.org, clemensh@chromium.org, bradnelson@chromium.org
>
> Review-Url: https://codereview.chromium.org/2647323002
> Cr-Commit-Position: refs/heads/master@{#42603}
> Committed: 01c87ebe70

TBR=bradnelson@chromium.org,titzer@chromium.org,ahaas@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Review-Url: https://codereview.chromium.org/2645403005
Cr-Commit-Position: refs/heads/master@{#42604}
2017-01-23 16:23:25 +00:00
ahaas
01c87ebe70 [wasm] Turn on trap-if by default.
This CL turns on trap-if by default, and it changes the tests so that
traps in the cctests are also tested without trap-if.

R=titzer@chromium.org, clemensh@chromium.org, bradnelson@chromium.org

Review-Url: https://codereview.chromium.org/2647323002
Cr-Commit-Position: refs/heads/master@{#42603}
2017-01-23 15:59:43 +00:00
ishell
87d7bb40d6 Use proper descriptors array when committing state to JSON object.
This CL fixes an issue introduced in https://codereview.chromium.org/2645083003.

BUG=chromium:683818

Review-Url: https://codereview.chromium.org/2651653002
Cr-Commit-Position: refs/heads/master@{#42602}
2017-01-23 12:21:08 +00:00
franzih
679201f67b [parser] Delete has_seen_proto in ObjectLiteral.
For an object literal, has_seen_proto is needed to create the
BoilerplateDescription. When iterating over the object
properties in the AST, has_seen_proto can easily be computed. The
flag in the ObjectLiteral is unnecessary.

R=verwaest@chromium.org

BUG=v8:5625

Review-Url: https://codereview.chromium.org/2646333002
Cr-Commit-Position: refs/heads/master@{#42601}
2017-01-23 12:19:10 +00:00
bmeurer
e347408d4d [turbofan] Add fast path for cached property names.
Port the fast path for accessor inlining to cached property names from
Crankshaft to TurboFan. This constant-folds accesses to document in a
script.

R=jochen@chromium.org
BUG=v8:5548

Review-Url: https://codereview.chromium.org/2646363003
Cr-Commit-Position: refs/heads/master@{#42600}
2017-01-23 12:13:51 +00:00
ahaas
94266b7d86 [wasm] Change the constant kV8MaxWasmMemoryPages to a command line flag.
The hardcoded constant caused a problem for the wasm fuzzer because
when the maximum memory was allocated in a test case, clusterfuzz ran
out of memory. with the command line flag we can set a lower limit
for the fuzzer.

The flag has the value of the constant as its default value, so that
for everything but the fuzzers nothing should change.

R=titzer@chromium.org
BUG=chromium:676888

Review-Url: https://codereview.chromium.org/2626313003
Cr-Commit-Position: refs/heads/master@{#42599}
2017-01-23 12:09:52 +00:00
franzih
0d1e0a1521 [ast] Count index keys in AST not runtime.
We do not want to reserve space in the backing store for index keys.
Count index keys during creation of the BoilerplateDescription, and
substract them for the backing store size.

Correctly count index keys after encountering a property with
a computed name during object literal creation.

R=verwaest@chromium.org

BUG=v8:5625

Review-Url: https://codereview.chromium.org/2651523002
Cr-Commit-Position: refs/heads/master@{#42598}
2017-01-23 12:08:32 +00:00
clemensh
14f470cafd Enable emplace_back for zone containers
As required by C++11, this CL changes the zone allocator to be able to
construct and destroy arbitrary types, and accept arbitrary arguments
for construct, passing them via perfect forwarding.
I also change some push_back to emplace_back. Some of those did not
compile before.

R=ishell@chromium.org, titzer@chromium.org

Review-Url: https://codereview.chromium.org/2646873004
Cr-Commit-Position: refs/heads/master@{#42597}
2017-01-23 11:12:27 +00:00
ahaas
1f069202e1 [wasm] Fix a typo in wasm-js.cc
I guess that a comparison with i::wasm::kV8MaxWasmTableSize was not
intended here. I did not add a test because I do not even know if it is
even possible to create a WasmMemoryObject with
maximum_pages > i::wasm::kV8MaxWasmMemoryPages. Maybe we should replace
the condition with a Check instead.

R=titzer@chromium.org

Review-Url: https://codereview.chromium.org/2645273004
Cr-Commit-Position: refs/heads/master@{#42596}
2017-01-23 10:56:08 +00:00
yangguo
876da98a51 [debugger api] remove legacy JSON debug protocol.
R=jgruber@chromium.org
BUG=v8:5530

Review-Url: https://codereview.chromium.org/2642253005
Cr-Original-Commit-Position: refs/heads/master@{#42543}
Committed: e26a58e43c
Review-Url: https://codereview.chromium.org/2642253005
Cr-Commit-Position: refs/heads/master@{#42595}
2017-01-23 10:44:20 +00:00
yangguo
3a9152ece7 Split some SharedFunctionInfo's compiler hints off into debugger hints.
We are planning to add a few more debugger related bits, and are running
out of compiler hints bits. The new bit field is going to be part of the
debug info struct. If the debug info is not available, we store the bit
field in its place on the shared function info.

Review-Url: https://codereview.chromium.org/2649873002
Cr-Commit-Position: refs/heads/master@{#42594}
2017-01-23 10:25:02 +00:00
petermarshall
53a887e4c6 [Turbofan] Add CallFunctionWithSpread JSOperator.
Add the operator in preparation for actual perf work. The operator is replaced
by the same runtime call as before, during lowering.

BUG=v8:5511

Review-Url: https://codereview.chromium.org/2639233002
Cr-Commit-Position: refs/heads/master@{#42593}
2017-01-23 09:46:00 +00:00
zhengxing.li
68289fd9f5 X87: [builtins] Don't put doubles on the stack in ConstructWithSpread.
port ee9c709190 (r42561)

  original commit message:
  FAST_DOUBLE_ELEMENTS and FAST_HOLEY_DOUBLE_ELEMENTS kinds should both
  be handled by the runtime.

BUG=

Review-Url: https://codereview.chromium.org/2649053002
Cr-Commit-Position: refs/heads/master@{#42592}
2017-01-23 09:14:02 +00:00
zhengxing.li
6435c2343c X87: Skip SignallingNanSurvivesI32ReinterpretF32/SignallingNanSurvivesI64ReinterpretF64 tests.
The CL #42545 (https://codereview.chromium.org/2639353002 ) add SignallingNanSurvivesI32ReinterpretF32/SignallingNanSurvivesI64ReinterpretF64 tests.
  Those tests failed at x87 port as X87 FPU hardware will convert a sNaN to qNaN automatically.

  This CL skips SignallingNanSurvivesI32ReinterpretF32/SignallingNanSurvivesI64ReinterpretF64 tests for x87.

BUG=

Review-Url: https://codereview.chromium.org/2649843002
Cr-Commit-Position: refs/heads/master@{#42591}
2017-01-23 09:10:52 +00:00
petermarshall
96220730e6 [Ignition/turbo] Add a CallWithSpread bytecode.
Also, emit a NewWithSpread bytecode for CallNew AST nodes where possible, rather than desugaring in the parser.

BUG=v8:5511

Review-Url: https://codereview.chromium.org/2629363002
Cr-Original-Commit-Position: refs/heads/master@{#42455}
Committed: 4bae43471d
Review-Url: https://codereview.chromium.org/2629363002
Cr-Commit-Position: refs/heads/master@{#42590}
2017-01-23 09:03:35 +00:00
bmeurer
7b6ac70a4a [builtins] Pass NotNullOrUndefined to ToPrimitive calls.
For calls from ToPrimitive we already now that the receiver cannot be
null or undefined, since a property lookup succeeded before the call,
which would have thrown an exception in case of null or undefined.

R=yangguo@chromium.org

Review-Url: https://codereview.chromium.org/2649093002
Cr-Commit-Position: refs/heads/master@{#42589}
2017-01-23 09:00:59 +00:00
zhengxing.li
66f2d7b648 X87: [wasm] Fix I32ReinterpretF32 and I64ReinterpretF64 on ia32.
port ea92543171 (r42545)

  original commit message:
  On ia32 return statements in C++ automatically convert signalling NaNs
  to quiet NaNs, even when bit_cast is used. This CL removes all uses of
  bit_cast<float> and bit_cast<double> in the wasm compiler and wasm
  interpreter.

BUG=

Review-Url: https://codereview.chromium.org/2648203002
Cr-Commit-Position: refs/heads/master@{#42588}
2017-01-23 08:56:51 +00:00
zhengxing.li
8b5d1aa686 X87: [wasm] Fix codegen issue for i64.add and i64.sub on ia32.
port 037200e625 (r42486)

  original commit message:
  The IA32AddPair and IA32SubPair instructions were using an input register as a
  temporary value, which led to registers sometimes being clobbered when they
  shouldn't have been. This led to problems, for example, in calling printf to
  format doubles:

  printf("%f", 1.2345) => 0.61725 (on x86)

BUG=

Review-Url: https://codereview.chromium.org/2645233002
Cr-Commit-Position: refs/heads/master@{#42587}
2017-01-23 02:51:03 +00:00