Commit Graph

30760 Commits

Author SHA1 Message Date
mstarzinger
69963b4c5a [compiler] Move inline function tracing to Crankshaft.
This moves all the machinery for tracing inlined function that is
specific to Crankshaft into the appropriate component. Only the old
side-channel via a list of InlinedFunctionInfo structs remained within
the CompilationInfo for now. In the long run we will reconstruct that
information from the deoptimization data on the code objects.

R=bmeurer@chromium.org

Review-Url: https://codereview.chromium.org/1944323002
Cr-Commit-Position: refs/heads/master@{#36068}
2016-05-06 09:23:19 +00:00
clemensh
a4cd1eef0a [wasm] Make wasm info available on the stack trace
This changes different locations to extract the reference to the wasm
object and the function index from the stack trace, and make it
available through all the APIs which process stack traces.
The javascript CallSite object now has the new methods isWasm(),
getWasmObject() and getWasmFunctionIndex(); the byte offset is
available via getPosition().

Function names of wasm frames should be fully functional with this
commit, position information works reliably for calls, but not for
traps like unreachable or out-of-bounds accesses.

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

Review-Url: https://codereview.chromium.org/1909353002
Cr-Commit-Position: refs/heads/master@{#36067}
2016-05-06 09:07:45 +00:00
titzer
3b7ff999f3 Revert of [turbofan] Take the immediate size in account when narrowing ia32/x64 word comparison operators. (patchset #2 id:20001 of https://codereview.chromium.org/1948453002/ )
Reason for revert:
Breaks WASM; please also add tests when relanding.

Original issue's description:
> [turbofan] Take the immediate size in account when narrowing ia32/x64 word comparison operators.
>
> Before this patch, we would emit a cmp or test with a memory operand only if both of the operands in the IR were loads. Now if either of them is a load and the other one is an immediate, we can use a memory operand if the load representation machine size is wide enough to represent the latter.
>
> Committed: https://crrev.com/a0543313dbd46b0c2e72c91ee3488a7dc6db73e4
> Cr-Commit-Position: refs/heads/master@{#36009}

TBR=bmeurer@chromium.org,jfb@chromium.org,epertoso@chromium.org
# Not skipping CQ checks because original CL landed more than 1 days ago.

Review-Url: https://codereview.chromium.org/1959603002
Cr-Commit-Position: refs/heads/master@{#36066}
2016-05-06 09:07:44 +00:00
machenbach
27aff30180 [Interpreter] Skip test for tsan.
BUG=v8:4280
LOG=N
NOTRY=true
TBR=rmcilroy@chromium.org

Review-Url: https://codereview.chromium.org/1956663002
Cr-Commit-Position: refs/heads/master@{#36065}
2016-05-06 08:00:07 +00:00
machenbach
6e6a7ea3a4 [test] Skip failing test after clang roll.
BUG=v8:4995
LOG=n
NOTRY=true
TBR=thakis@chromium.org, titzer@chromium.org

Review-Url: https://codereview.chromium.org/1955013002
Cr-Commit-Position: refs/heads/master@{#36064}
2016-05-06 07:57:50 +00:00
bmeurer
8e5e6333cf [turbofan] Remove obsolete EffectSet common operator.
This operator was initially designed to handle arbitrary effect merging
for effect relaxation, but we don't do that (at least currently). So no
need to keep the dead operator around.

R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/1954983002
Cr-Commit-Position: refs/heads/master@{#36063}
2016-05-06 07:46:44 +00:00
mbrandy
f6df485dc1 [turbofan] Use kHeapObjectTag in place of hard-coded value.
R=bmeurer@chromium.org, jarin@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/1945303003
Cr-Commit-Position: refs/heads/master@{#36062}
2016-05-06 07:33:38 +00:00
zhengxing.li
0cf40f9c66 X87: [stubs] Convert InternalArrayNoArgumentsConstructor to a TurboFan stub.
port d2efbf2538 (r36000)

  original commit message:

BUG=

Review-Url: https://codereview.chromium.org/1947363002
Cr-Commit-Position: refs/heads/master@{#36061}
2016-05-06 07:33:37 +00:00
jochen
609b5e5e30 Add GN target for the sample shell
I want to stop using d8 from the chromium build, so we could potentially
use it for running tests.

BUG=chromium:609107
R=machenbach@chromium.org
LOG=n

Review-Url: https://codereview.chromium.org/1944353002
Cr-Commit-Position: refs/heads/master@{#36060}
2016-05-06 07:31:06 +00:00
v8-autoroll
0ae0976110 Update V8 DEPS.
Rolling v8/build to 119d5305247498fdd8a215b8e2b6c50223ac7d4b

Rolling v8/tools/clang to 0bb0462a91310d88ab9d124d8db54a70c9e1d1b0

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

Review-Url: https://codereview.chromium.org/1953813004
Cr-Commit-Position: refs/heads/master@{#36059}
2016-05-06 07:31:05 +00:00
zhengxing.li
23a650ed07 X87: Add new relocation type WASM_MEMORY_SIZE_REFERENCE, use relocatable pointers to update wasm memory size references in generated code.
port 117a56b7c2 (r36044)

  original commit message:
  - Add new RelocInfo mode WASM_MEMORY_SIZE_REFERENCE in the assembler and add relocation information to immediates in compare instructions.
  - Use relocatable constants for MemSize/BoundsCheck in the wasm compiler

BUG=

Review-Url: https://codereview.chromium.org/1947413003
Cr-Commit-Position: refs/heads/master@{#36058}
2016-05-06 07:31:04 +00:00
zhengxing.li
f68562ee0b X87: [turbofan] Take the immediate size in account when narrowing ia32/x64 word comparison operators.
port a0543313db (r36009)

  original commit message:
  Before this patch, we would emit a cmp or test with a memory operand only if both of the operands in the IR were loads.
  Now if either of them is a load and the other one is an immediate, we can use a memory operand if the load representation machine size is wide enough to represent the latter.

BUG=

Review-Url: https://codereview.chromium.org/1954963002
Cr-Commit-Position: refs/heads/master@{#36057}
2016-05-06 07:28:40 +00:00
jyan
79c350b3c5 S390: Add new relocation type WASM_MEMORY_SIZE_REFERENCE, use relocatable pointers to update wasm memory size references in generated code.
port 117a56b7c2

Original commit message:
     - Add new RelocInfo mode WASM_MEMORY_SIZE_REFERENCE in the assembler and add relocation information to immediates in compare instructions.
     - Use relocatable constants for MemSize/BoundsCheck in the wasm compiler

R=gdeepti@chromium.org, joransiu@ca.ibm.com, mbrandy@us.ibm.com, bjaideep@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=

Review-Url: https://codereview.chromium.org/1955593003
Cr-Commit-Position: refs/heads/master@{#36056}
2016-05-05 19:12:32 +00:00
mtrofin
c6405c4a60 [tools] added wasm to the list of benchmarks
BUG=

Review-Url: https://codereview.chromium.org/1931293005
Cr-Commit-Position: refs/heads/master@{#36055}
2016-05-05 19:12:31 +00:00
bjaideep
a870cf3abd PPC: Add new relocation type WASM_MEMORY_SIZE_REFERENCE, use relocatable pointers to update wasm memory size references in generated code.
Port 117a56b7c2

Original commit message:

     - Add new RelocInfo mode WASM_MEMORY_SIZE_REFERENCE in the assembler and add relocation information to immediates in compare instructions.
     - Use relocatable constants for MemSize/BoundsCheck in the wasm compiler

R=gdeepti@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com

BUG=
LOG=N

Review-Url: https://codereview.chromium.org/1948263003
Cr-Commit-Position: refs/heads/master@{#36054}
2016-05-05 19:10:10 +00:00
akos.palfi
e11eb9a7d7 MIPS: [Atomics] Make Atomics.store a builtin using TF
Port 81cb841170

BUG=

Review-Url: https://codereview.chromium.org/1957463002
Cr-Commit-Position: refs/heads/master@{#36053}
2016-05-05 19:10:09 +00:00
titzer
87cbbdfb1e [wasm] Refactor handling of variable info in typing-asm.cc
R=bradnelson@chromium.org,rossberg@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/1951013002
Cr-Commit-Position: refs/heads/master@{#36052}
2016-05-05 19:07:48 +00:00
zhengxing.li
e8c7592c5e X87: [Atomics] Fix disassembly for ia32 xchg_b and xchg_w.
port af677d7b34 (r35998)

  original commit message:
  https://codereview.chromium.org/1938213002 added xchg_b and xchg_w, but didn't
  add it to the disassembler, and there were no tests that caught it.

BUG=

Review-Url: https://codereview.chromium.org/1947843002
Cr-Commit-Position: refs/heads/master@{#36051}
2016-05-05 19:07:47 +00:00
v8-autoroll
fd4f63b652 Update V8 DEPS.
Rolling v8/build to f80756f5df1d90cf1113a2ce335147482e36f65e

Rolling v8/buildtools to 731bdb2af8b5839450605ddebdcf5de749cf9d17

Rolling v8/tools/clang to ee715658a19a60fc73b02532a077d9c96f291331

Rolling v8/tools/gyp to 02b145a1a4f4e1c62e8bae06045caf852d9ef17f

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

Review-Url: https://codereview.chromium.org/1945103004
Cr-Commit-Position: refs/heads/master@{#36050}
2016-05-05 03:37:35 +00:00
zhengxing.li
7a07e9cae4 X87: [Atomics] Make Atomics.store a builtin using TF.
port 81cb841170 (r35993)

  original commit message:

BUG=

Review-Url: https://codereview.chromium.org/1947833002
Cr-Commit-Position: refs/heads/master@{#36049}
2016-05-05 03:24:02 +00:00
zhengxing.li
8d77d42e9d X87: [stubs]: Implement ArrayNoArgumentConstructor as a TF stub.
port fa570e55b6 (r35963)

  original commit message:

BUG=

Review-Url: https://codereview.chromium.org/1952583002
Cr-Commit-Position: refs/heads/master@{#36048}
2016-05-05 02:59:42 +00:00
adamk
40b3626e45 Disallow yield in computed property names of class expressions in params
R=littledan@chromium.org
BUG=v8:4974
LOG=n

Review-Url: https://codereview.chromium.org/1949223002
Cr-Commit-Position: refs/heads/master@{#36047}
2016-05-04 23:25:25 +00:00
adamk
75f2d65f00 Don't treat catch scopes as possibly-shadowing for sloppy eval
Scope analysis is over-conservative when treating variable resolutions
as possibly-shadowed by a sloppy eval. In the attached bug, this comes
into play since catch scopes have different behavior with respect to
the "calls eval" in eager vs lazy compilation (in the latter, they
are never marked as "calls eval" because CatchContexts don't have
an associated ScopeInfo).

This patch changes the scope-type check to also eliminate a few other
cases where shadowing isn't possible, such as non-declaration block scopes.

BUG=chromium:608279
LOG=n

Review-Url: https://codereview.chromium.org/1950803002
Cr-Commit-Position: refs/heads/master@{#36046}
2016-05-04 21:36:13 +00:00
mike
915ec67cc6 Convert negative zero in ArraySpeciesCreate
As per the ES2015 spec, the value `-0` should be converted to `+0` prior
to invocation of the species constructor.

BUG=v8:4988
LOG=N
R=littledan@chromium.org

Review-Url: https://codereview.chromium.org/1950073002
Cr-Commit-Position: refs/heads/master@{#36045}
2016-05-04 21:33:51 +00:00
gdeepti
117a56b7c2 Add new relocation type WASM_MEMORY_SIZE_REFERENCE, use relocatable pointers to update wasm memory size references in generated code.
- Add new RelocInfo mode WASM_MEMORY_SIZE_REFERENCE in the assembler and add relocation information to immediates in compare instructions.
 - Use relocatable constants for MemSize/BoundsCheck in the wasm compiler

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

Review-Url: https://codereview.chromium.org/1921203002
Cr-Commit-Position: refs/heads/master@{#36044}
2016-05-04 20:20:50 +00:00
mbrandy
9f2147874a PPC: Handle large offsets in LoadPU/StorePU.
TEST=mjsunit/array-constructor
R=joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, bjaideep@ca.ibm.com
BUG=

Review-Url: https://codereview.chromium.org/1947233002
Cr-Commit-Position: refs/heads/master@{#36043}
2016-05-04 19:56:26 +00:00
alph
0a8cd4dc02 Sampling heap profiler: Force Full GC before retrieving the profile.
BUG=v8:4959
LOG=N

Review-Url: https://codereview.chromium.org/1949693003
Cr-Commit-Position: refs/heads/master@{#36042}
2016-05-04 19:16:27 +00:00
jyan
8c55885fe7 S390: Fix printf format mismatch for icount
R=joransiu@ca.ibm.com, cornacch@ca.ibm.com, mbrandy@us.ibm.com
BUG=

Review-Url: https://codereview.chromium.org/1948113002
Cr-Commit-Position: refs/heads/master@{#36041}
2016-05-04 19:03:09 +00:00
jyan
e23471eed2 S390: [stubs] Convert InternalArrayNoArgumentsConstructor to a TurboFan stub
Port d2efbf2538

R=danno@chromium.org, joransiu@ca.ibm.com, bjaideep@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com

BUG=chromium:608675
LOG=N

Review-Url: https://codereview.chromium.org/1946193004
Cr-Commit-Position: refs/heads/master@{#36040}
2016-05-04 19:00:30 +00:00
jyan
a6d9f42327 S390: [Atomics] Make Atomics.store a builtin using TF
Port 81cb841170

R=binji@chromium.org, joransiu@ca.ibm.com, bjaideep@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com

BUG=v8:4614
LOG=N

Review-Url: https://codereview.chromium.org/1948043002
Cr-Commit-Position: refs/heads/master@{#36039}
2016-05-04 18:40:41 +00:00
pierre.langlois
f07d2cdd6a ARM64: [turbofan] Avoid zero-extension after a 32-bit load
A load instruction will implicitely clear the top 32 bits when writing to a W
register. This patch avoids generating a `mov` instruction to zero-extend the
result in this case.

For example, this occurs in the generated code for dispatching to the next
bytecode in the interpreter:

  kind = BYTECODE_HANDLER
  name = LdaZero
  compiler = turbofan
  Instructions (size = 36)
  0x32e64c60     0  add x19, x19, #0x1 (1)
  0x32e64c64     4  ldrb w0, [x20, x19]
  0x32e64c68     8  mov w0, w0
                    ^^^^^^^^^^
  0x32e64c6c    12  lsl x0, x0, #3
  0x32e64c70    16  ldr x1, [x21, x0]
  0x32e64c74    20  movz x0, #0x0
  0x32e64c78    24  br x1

BUG=

Review-Url: https://codereview.chromium.org/1950013003
Cr-Commit-Position: refs/heads/master@{#36038}
2016-05-04 18:35:56 +00:00
jyan
e9b244c58a S390: Add HasProperty code stub that tries simple lookups or jumps to runtime otherwise.
Code common with ObjectHasOwnProperty builtin was moved to CodeStubAssembler.

R=ishell@chromium.org, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com
BUG=v8:2743
LOG=Y

Review-Url: https://codereview.chromium.org/1946303002
Cr-Commit-Position: refs/heads/master@{#36037}
2016-05-04 18:35:55 +00:00
bryleun
634e5bbab0 S390: [stubs]: Implement ArrayNoArgumentConstructor as a TF stub
Port fa570e55b6

R=joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com

BUG=

Review-Url: https://codereview.chromium.org/1952433002
Cr-Commit-Position: refs/heads/master@{#36036}
2016-05-04 17:29:00 +00:00
nikolaos
0d1687b9df Add support for disabling the preparser when testing modules
R=adamk@chromium.org
BUG=
LOG=N

Review-Url: https://codereview.chromium.org/1952473003
Cr-Commit-Position: refs/heads/master@{#36035}
2016-05-04 17:22:20 +00:00
jyan
60c0389b29 S390: Fix Macro-Asm DCHECK
Move DCHECK to only check for necessary path.

R=joransiu@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com
BUG=

Review-Url: https://codereview.chromium.org/1946003003
Cr-Commit-Position: refs/heads/master@{#36034}
2016-05-04 16:51:05 +00:00
littledan
04c8c11ee5 Make array __proto__ manipulations not disturb the species protector
Previously, the species protector was invalidated whenever the __proto__ of
an Array instance was manipulated. Then, if the map's new_target_is_base field
remained set, it was correct to conclude that GetPrototypeOf(array) was
%ArrayPrototype%. However, this choice caused the popular D3 framework to
invalidate the species protector, causing many functions to become slower.

This patch eliminates that aspect of the species protector. Instead, the check
is to look at the instance->map()->prototype(). It is valid to look directly
at the map's prototype slot, ignoring hidden prototypes and proxies, because
- This is only called on Array instances, so the receiver cannot be a Proxy.
- For hidden prototypes, any inaccuracy would only result in conservatively
  taking the slow path.

Theoretically, this patch could make methods applied to arrays from other
contexts slower. However, the slowdown would only affect a particular array
instance and not have a global spill-over effect. Further, the slowdown could
be addressed by tracking, either in the instance's map or in the actual
prototype object, whether it is a %ArrayPrototype% from any context, in a way
which is cheap to query, and use that rather than comparing to the currently
executing native context.

In interactive testing, this patch led the OnShape CAD system to experience
faster load times (110+s -> 40s).

BUG=chromium:606207
LOG=Y

Review-Url: https://codereview.chromium.org/1936393002
Cr-Commit-Position: refs/heads/master@{#36033}
2016-05-04 16:48:50 +00:00
jyan
25c0ee5d8b S390: [turbofan] Properly initialize OutOfLineRecordWrite.
TEST=cctest/test-api/Regress470113 --ignition
R=joransiu@ca.ibm.com, mbrandy@us.ibm.com, michael_dawson@ca.ibm.com, bjaideep@ca.ibm.com
BUG=

Review-Url: https://codereview.chromium.org/1944333002
Cr-Commit-Position: refs/heads/master@{#36032}
2016-05-04 16:24:18 +00:00
kozyatinskiy
f0d27360a6 Add v8::Object::GetOwnPropertyNames(context, filter) method
This method provides ability to get all properties of the object with passed filter in addition to existing GetOwnPropertyNames(context) method that returns only enumerable properties.

BUG=v8:3861,chromium:581495
R=yangguo@chromium.org
LOG=Y

Review-Url: https://codereview.chromium.org/1943773002
Cr-Commit-Position: refs/heads/master@{#36031}
2016-05-04 16:15:36 +00:00
mstarzinger
068791e2ca [compiler] Remove is_native and is_eval accessors.
This removes some low-level accessors from the CompilationInfo which
only delegate to the ParseInfo. Instead we add a helper that computes
the flags passed to DeclareGlobals for all backends.

R=titzer@chromium.org

Review-Url: https://codereview.chromium.org/1952623002
Cr-Commit-Position: refs/heads/master@{#36030}
2016-05-04 16:00:00 +00:00
neis
ca5aa3c86a [interpreter] Always 'continue' loops by jumping forward to end of body.
We sometimes used to continue by jumping _back_ to the condition check at the
top of the loop. After my recent generator-related changes, that check is no
longer at the loop header, so a continue could create an additional loop. In
order to avoid this, we now always set the continue target to be the first
instruction following the loop body.

BUG=

Review-Url: https://codereview.chromium.org/1943383003
Cr-Commit-Position: refs/heads/master@{#36029}
2016-05-04 15:57:40 +00:00
mbrandy
88877e5519 Fix IterateCompiledFrame for embedded constant pools.
Do not visit the constant pool pointer frame slot.

TEST=cctest/test-api/Regress137496 --ignition
R=danno@chromium.org, mcilroy@chromium.org, bjaideep@ca.ibm.com
BUG=

Review-Url: https://codereview.chromium.org/1950623002
Cr-Commit-Position: refs/heads/master@{#36028}
2016-05-04 15:46:30 +00:00
alph
e8e9c07e54 Make sure the heap is in consistent state when calling allocation observers.
The observer might want to lookup something in the heap, e.g. code objects
it has in the call stack.

BUG=v8:4959
LOG=N

Review-Url: https://codereview.chromium.org/1948893002
Cr-Commit-Position: refs/heads/master@{#36027}
2016-05-04 14:40:18 +00:00
neis
9ae91f8d77 [full-codegen] Remove superfluous NestedStatement use in VisitDoExpression
BUG=

Review-Url: https://codereview.chromium.org/1943893003
Cr-Commit-Position: refs/heads/master@{#36026}
2016-05-04 14:29:14 +00:00
jochen
e5baec22d3 Make it possible to set a getter and a setter at the same time
BUG=chromium:588893, chromium:325923
LOG=n
R=verwaest@chromium.org

Review-Url: https://codereview.chromium.org/1943303002
Cr-Commit-Position: refs/heads/master@{#36025}
2016-05-04 14:15:39 +00:00
ishell
1350eb3dc9 [es8] More spec compliant syntactic tail calls implementation.
Unlike previous implementation where the 'continue' keyword was a feature of a return statement the keyword is now recognized as a part of expression. Error reporting was significantly improved.

--harmony-explicit-tailcalls option is now orthogonal to --harmony-tailcalls so we can test both modes at the same time.

This CL also adds %GetExceptionDetails(exception) that fetches hidden |start_pos| and |end_pos| values from the exception object.

BUG=v8:4915
LOG=N

Review-Url: https://codereview.chromium.org/1928203002
Cr-Commit-Position: refs/heads/master@{#36024}
2016-05-04 13:44:42 +00:00
epertoso
46907cbbab [stubs] Fix Allocate macro in the CodeStubAssembler.
The macro was Using SmiTag(Int32Constant()) was causing some unnecessary shifts to be emitted in the deferred code.

Also, when allocating in new space, the macro now uses Runtime::kAllocateInNewSpace.

Review-Url: https://codereview.chromium.org/1945263002
Cr-Commit-Position: refs/heads/master@{#36023}
2016-05-04 12:48:53 +00:00
bmeurer
ce38a8a92a [turbofan] Inline the allocation fast path.
Now that everything is properly wired to the effect chain when we get to
ChangeLowering, we can safely inline the allocation fast path and only
need to consule the slow path stub fallback when bump pointer allocation
fails.

R=jarin@chromium.org
BUG=v8:4931
LOG=n

Review-Url: https://codereview.chromium.org/1951853002
Cr-Commit-Position: refs/heads/master@{#36022}
2016-05-04 12:44:32 +00:00
neis
06c5127f5b [full-codegen] Introduce NestedStatement subclass for class literals.
This fixes a bug where returning from a class literal inside
a try-finally didn't restore the context properly when
entering the finally clause.

BUG=v8:4965
LOG=n

Review-Url: https://codereview.chromium.org/1952633002
Cr-Commit-Position: refs/heads/master@{#36021}
2016-05-04 12:42:04 +00:00
jochen
d3b50cbb5c Use Null as "no accessor" in AccessorPair instead of TheHole
R=verwaest@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/1949493004
Cr-Commit-Position: refs/heads/master@{#36020}
2016-05-04 12:37:41 +00:00
ulan
566c825d4a Fix MakeWeak and IsWeakRetainer for global handles with finalizers.
BUG=

Review-Url: https://codereview.chromium.org/1944813002
Cr-Commit-Position: refs/heads/master@{#36019}
2016-05-04 11:58:37 +00:00