Commit Graph

30755 Commits

Author SHA1 Message Date
caitpotter88
d08c0304c5 [esnext] prototype runtime implementation for async functions
BUG=v8:4483
LOG=N
R=littledan@chromium.org, adamk@chromium.org

Review-Url: https://codereview.chromium.org/1895603002
Cr-Commit-Position: refs/heads/master@{#36263}
2016-05-17 00:27:51 +00:00
jwolfe
5582e158e5 Add UseCounter for decimal with leading zero.
Re-landing https://codereview.chromium.org/1948403002/

New changes:

move variable initialization to make compiler happy

BUG=v8:4973
LOG=y

Review-Url: https://codereview.chromium.org/1969203004
Cr-Commit-Position: refs/heads/master@{#36262}
2016-05-16 23:22:26 +00:00
caitpotter88
0d43421a22 [esnext] implement frontend changes for async/await proposal
BUG=v8:4483
LOG=Y
R=littledan@chromium.org, adamk@chromium.org

Review-Url: https://codereview.chromium.org/1841543003
Cr-Commit-Position: refs/heads/master@{#36261}
2016-05-16 23:19:02 +00:00
rmcilroy
9c6ff18355 [Interpreter] Clean up runtime-profiler logic for three tier pipeline.
Remove checks for IC hotness from Ignition tiering up decision since this is
not relevent for full-codegen compilation. Also make the decision about what
tier we are moving to more explicit and visible in --trace-opt.

BUG=v8:4280
LOG=N

Review-Url: https://codereview.chromium.org/1969773002
Cr-Commit-Position: refs/heads/master@{#36260}
2016-05-16 15:39:50 +00:00
v8-autoroll
ba76726209 Update V8 DEPS.
Rolling v8/build to 7854acf73fc05ab8b2cd340737eba14e3c442826

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

Review-Url: https://codereview.chromium.org/1981783002
Cr-Commit-Position: refs/heads/master@{#36259}
2016-05-16 03:26:24 +00:00
v8-autoroll
862406e76b Update V8 DEPS.
Rolling v8/build to d4fdf55ba8b19ee50d864162c343fd1939d00fe7

Rolling v8/buildtools to 06e80a0e17319868d4a9b13f9bb6a248dc8d8b20

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

Review-Url: https://codereview.chromium.org/1977243002
Cr-Commit-Position: refs/heads/master@{#36258}
2016-05-15 03:24:45 +00:00
franzih
6502a1bfb3 [runtime] Implement encodeURI as single runtime function.
Rewrite encodeURI as runtime function. We well probably
repackage runtime_URIEncode as a C++ builtin.

BUG=v8:4912

R=yangguo@chromium.org

Review-Url: https://codereview.chromium.org/1968953002
Cr-Commit-Position: refs/heads/master@{#36257}
2016-05-14 07:17:03 +00:00
v8-autoroll
29611a952b Update V8 DEPS.
Rolling v8/base/trace_event/common to 54b8455be9505c2cb0cf5c26bb86739c236471aa

Rolling v8/build to 93c1eb80b485df02249b83452a42b7a13b3bde28

Rolling v8/buildtools to e9fb74175ea7c3f251baad24d9ebe03c01ed5aba

Rolling v8/tools/gyp to bce1c7793010574d88d7915e2d55395213ac63d1

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

Review-Url: https://codereview.chromium.org/1980813002
Cr-Commit-Position: refs/heads/master@{#36256}
2016-05-14 03:39:44 +00:00
adamk
2a50c7526d Revert of [ignition] Inline the binary op TurboFan code stubs in the bytecode handlers. (patchset #1 id:1 of https://codereview.chromium.org/1974293002/ )
Reason for revert:
Causes cctest/test-serialize/SnapshotDataBlobWithWarmup failure on arm64:
https://build.chromium.org/p/client.v8.ports/builders/V8%20Linux%20-%20arm64%20-%20sim%20-%20debug/builds/534

Original issue's description:
> [ignition] Inline the binary op TurboFan code stubs in the bytecode handlers.
>
> Trying to reland http://crrev.com/1902823002.
>
> This time some blocks have been shuffled around in the AddStub so that the frame still doesn't get built for the fast path.
>
> Committed: https://crrev.com/567160122de0bdb78aea79a9faa0dc15a564484c
> Cr-Commit-Position: refs/heads/master@{#36251}

TBR=bmeurer@chromium.org,rmcilroy@chromium.org,epertoso@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/1978993003
Cr-Commit-Position: refs/heads/master@{#36255}
2016-05-13 23:49:36 +00:00
gsathya
d33aedb7b9 Revert "Fix TypedArray Property optimizations", add regression test and eliminate dead code
This reverts commit 41d571dfe8.

Reason for revert: This patch breaks the correctness of the typedarray
properties such as length, byteOffset, byteLength.

The accessor check optimization code is dead code eliminated. A follow
up patch will fix this optimization correctly.

BUG=chromium:593634

Review-Url: https://codereview.chromium.org/1977983002
Cr-Commit-Position: refs/heads/master@{#36254}
2016-05-13 22:31:07 +00:00
alph
a02076429d Sampling heap profiler: use map instead of vector for children.
Review-Url: https://codereview.chromium.org/1967673002
Cr-Commit-Position: refs/heads/master@{#36253}
2016-05-13 19:10:56 +00:00
jyan
e7a234253e S390: [Interpreter] Fix incorrect frame walking in arguments create stubs
Port 40f345416f

Original commit message:

    The previous approach taken by FastNew[Sloppy,Strict,Rest]ArgumentsStub
    looked at the function slot in order to skip stub frames
    and find the JS frame. However, stub frames do not have a
    function slot (in fact their fixed frame ends one slot
    before the JS frame's function slot). Therefore, if this
    location in the stub frame happens to have the function
    object the create arguments stubs won't skip this frame
    correctly.

    Replace this approach with one where the stub is
    specialized to either skip a frame if required (since
    there will only ever be one extra frame on Ignition
    the loop approach isn't necessary).

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

Review-Url: https://codereview.chromium.org/1978823002
Cr-Commit-Position: refs/heads/master@{#36252}
2016-05-13 18:10:22 +00:00
epertoso
567160122d [ignition] Inline the binary op TurboFan code stubs in the bytecode handlers.
Trying to reland http://crrev.com/1902823002.

This time some blocks have been shuffled around in the AddStub so that the frame still doesn't get built for the fast path.

Review-Url: https://codereview.chromium.org/1974293002
Cr-Commit-Position: refs/heads/master@{#36251}
2016-05-13 16:52:10 +00:00
jochen
baf1204df1 Reland of move v8_toolset_for_d8 flag (patchset #2 id:80001 of https://codereview.chromium.org/1974773002/ )
Reason for revert:
Addressed link failure

Original issue's description:
> Revert of Remove v8_toolset_for_d8 flag (patchset #1 id:1 of https://codereview.chromium.org/1969793002/ )
>
> Reason for revert:
> blocks roll: https://codereview.chromium.org/1975753002/
>
> Original issue's description:
> > Remove v8_toolset_for_d8 flag
> >
> > R=machenbach@chromium.org
> > BUG=chromium:609107
> >
> > Committed: https://crrev.com/6cb38427984f3c31ff6c8813535cfd6ebf6058c4
> > Cr-Commit-Position: refs/heads/master@{#36198}
>
> TBR=machenbach@chromium.org,jochen@chromium.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=chromium:609107
>
> Committed: https://crrev.com/b33f9a6f24edef8447adcfb028b7f1d6e291c34e
> Cr-Commit-Position: refs/heads/master@{#36209}

TBR=machenbach@chromium.org,hablich@chromium.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=chromium:609107

Review-Url: https://codereview.chromium.org/1973363002
Cr-Commit-Position: refs/heads/master@{#36250}
2016-05-13 16:13:12 +00:00
oth
1818a2f278 [interpreter] Remove BytecodeArrayBuilder::Illegal().
BUG=v8:4280
LOG=N

Review-Url: https://codereview.chromium.org/1979523002
Cr-Commit-Position: refs/heads/master@{#36249}
2016-05-13 16:01:49 +00:00
cbruni
407d9fcec7 [counters] Annotate v8 with more runtime call counters.
By fully annotating the API with runtime counters we can properly measure
how much time we spend in total in v8. When --runtime-call-stats is specified
we now disable the fast-paths for callbacks to properly measure them.
As a drive-by-fix this CL unifies the LOG messages in api.cc.
Additionally we added missing timers to gain better resolution in the parser
and callbacks.

BUG=

Review-Url: https://codereview.chromium.org/1923893002
Cr-Commit-Position: refs/heads/master@{#36248}
2016-05-13 15:54:49 +00:00
jkummerow
8313d2f0cb [IC] Only cache handlers on a map that were compiled for that map
Globally cached handler stubs shouldn't be put into the on-map caches.
This should speed up IC misses and save a bit of memory.

Drive-by fix: transitioning StoreIC handlers were erroneously never cached.

Review-Url: https://codereview.chromium.org/1974793002
Cr-Commit-Position: refs/heads/master@{#36247}
2016-05-13 15:02:32 +00:00
marija.antic
ced0f49763 MIPS64: Fix allocation folding test failures.
Allocation folding tests are failing in debug mode, since the change
https://codereview.chromium.org/1972553002 (6e15433db4) introduced a debug check in
lithium-codegen-mips64.cc, line 5287.

Reason for failure is to be found in https://codereview.chromium.org/1899813003 (61f5fbbb19),
which is missing changes calling LFastAllocate in lithium-mips64.cc.

BUG=

Review-Url: https://codereview.chromium.org/1977833002
Cr-Commit-Position: refs/heads/master@{#36246}
2016-05-13 14:53:19 +00:00
rmcilroy
48a1c5667a Reland Add V8.Execute histogram to measure time spent executing JS code.
Adds a V8.Execute histogram to measure the amount of time spent executing
JS code.

BUG=v8:4865
LOG=N

Review-Url: https://codereview.chromium.org/1976963002
Cr-Commit-Position: refs/heads/master@{#36245}
2016-05-13 14:46:08 +00:00
jochen
df4b916e00 Move the dependency on "log" to v8's public config
BUG=chromium:609107
R=machenbach@chromium.org

Review-Url: https://codereview.chromium.org/1973903004
Cr-Commit-Position: refs/heads/master@{#36244}
2016-05-13 14:03:04 +00:00
jyan
41dbaefb4a S390: [crankshaft] Fragmentation-free allocation folding.
Port 61f5fbbb19
Port 6e15433db4

Original commit message:

      The new allocation folding implementation avoids fragmentation between folded allocation.
      As a consequence, our heap will always be iterable i.e. we do not have to perform a
      garbage collection before iterating the heap.

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

Review-Url: https://codereview.chromium.org/1973883003
Cr-Commit-Position: refs/heads/master@{#36243}
2016-05-13 13:44:54 +00:00
mstarzinger
cc340be945 [turbofan] Simplify handling of JSON tracing files.
R=bmeurer@chromium.org

Review-Url: https://codereview.chromium.org/1977843002
Cr-Commit-Position: refs/heads/master@{#36242}
2016-05-13 13:44:53 +00:00
mstarzinger
0a60924e26 [turbofan] Fix --trace-turbo handle dereferences.
Whenever tracing is activated we disable concurrent compilation. Hence
all tracing functions can safely dereference all handles. This fixes the
tracing functionality by annotating tracing functions with proper scopes.

R=bmeurer@chromium.org

Review-Url: https://codereview.chromium.org/1976123002
Cr-Commit-Position: refs/heads/master@{#36241}
2016-05-13 13:31:10 +00:00
yangguo
7b1fe365a9 [liveedit] patch source position table for bytecode arrays.
R=mstarzinger@chromium.org
BUG=v8:4765

Review-Url: https://codereview.chromium.org/1976933002
Cr-Commit-Position: refs/heads/master@{#36240}
2016-05-13 13:21:37 +00:00
titzer
82db9dece3 [wasm] Remove legacy encoding of local variables from asm->wasm.
R=ahaas@chromium.org,bradnelson@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/1980483002
Cr-Commit-Position: refs/heads/master@{#36239}
2016-05-13 12:49:36 +00:00
ulan
7bc54ba832 Check number of finished tasks in PageParallelJob.
BUG=chromium:609249
LOG=NO

Review-Url: https://codereview.chromium.org/1976133002
Cr-Commit-Position: refs/heads/master@{#36238}
2016-05-13 12:37:45 +00:00
yangguo
72b510dfb3 [liveedit] support restarting interpreted frame and replacing bytecode.
R=mstarzinger@chromium.org
BUG=v8:4765

Review-Url: https://codereview.chromium.org/1968423002
Cr-Commit-Position: refs/heads/master@{#36237}
2016-05-13 12:14:56 +00:00
rmcilroy
40c787288d [Interpreter] Make Fast-paths of StackCheck, Jump Return, ForInNext not build a frame.
Tweaks the generated code for a number of bytecode handlers. In particular, uses
deferred labels (now that they exist) to ensure that fast-paths don't build frames
where possible. This improves the codegen for StackCheck, Jump, Return and ForInNext.
Also tweak the codegen for CreateArguments, LogicalNot, ForInDone.

Seems to give ~5-8% performance boost on Octane.

BUG=v8:4280
LOG=N

Review-Url: https://codereview.chromium.org/1973873004
Cr-Commit-Position: refs/heads/master@{#36236}
2016-05-13 11:45:05 +00:00
verwaest
c9a83150e0 [runtime] Make sure that LookupIterator::OWN always performs a HIDDEN lookup as well.
Hidden prototypes are merely an implementation detail. Properties on an object + hidden prototype should look like properties on the object. Hence we should always perform a hidden prototype lookup. This CL removes the option to ignore hidden prototypes to avoid bugs that leak this implementation detail.

Also, the only previously valid cases were either places were we knew we didn't have a hidden prototype; or because we knew we (in the optimizing compiler) would only handle properties from the non-hidden object.The first case is already handled by directly tagging whether a receiver has a hidden prototype. In the second case we can just filter out properties from hidden prototypes.

Review-Url: https://codereview.chromium.org/1975763002
Cr-Commit-Position: refs/heads/master@{#36235}
2016-05-13 11:33:33 +00:00
hablich
fff4301f8a Revert of Add V8.Execute histogram to measure time spent executing JS code. (patchset #1 id:1 of https://codereview.chromium.org/1974003002/ )
Reason for revert:
Blocks roll https://codereview.chromium.org/1972303002/

Repro:
- build chromium with this CL
- out/Default/content_browsertests --gtest_filter=AccessibilityHitTestingBrowserTest.HitTestingInIframes

Original issue's description:
> Add V8.Execute histogram to measure time spent executing JS code.
>
> Adds a V8.Execute histogram to measure the amount of time spent executing
> JS code.
>
> BUG=v8:4865
> LOG=N
>
> Committed: https://crrev.com/e8f5a2723cf54576b84322ac2ee6ef7abc9df056
> Cr-Commit-Position: refs/heads/master@{#36217}

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

Review-Url: https://codereview.chromium.org/1970193003
Cr-Commit-Position: refs/heads/master@{#36234}
2016-05-13 11:17:18 +00:00
hablich
4505b54a28 Reland of [Reland] Implement CPU time for OS X and POSIX. (patchset #1 id:1 of https://codereview.chromium.org/1977753002/ )
Reason for revert:
Not the culprit sorry.

Original issue's description:
> Revert of [Reland] Implement CPU time for OS X and POSIX. (patchset #1 id:1 of https://codereview.chromium.org/1966183003/ )
>
> Reason for revert:
> Blocks roll: https://codereview.chromium.org/1972303002/
>
> Original issue's description:
> > [Reland] Implement CPU time for OS X and POSIX.
> >
> > V8 tracing controller uses 2 clocks: wall clock and cpu clock. This patch
> > implements CPU time for OS X and POSIX to provide more accurate
> > accounting of CPU time used by each thread.
> >
> > BUG=v8:4984
> > LOG=n
> >
> > Committed: https://crrev.com/efa27fb25e1fa5b8465f4af710086b73b0cba660
> > Cr-Commit-Position: refs/heads/master@{#36213}
>
> TBR=fmeawad@chromium.org,jochen@chromium.org,rsesek@chromium.org,bmeurer@chromium.org,lpy@chromium.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=v8:4984
>
> Committed: https://crrev.com/31b9ba3bc8fb93601cc73c83213b30e639d448b3
> Cr-Commit-Position: refs/heads/master@{#36225}

TBR=fmeawad@chromium.org,jochen@chromium.org,rsesek@chromium.org,bmeurer@chromium.org,lpy@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:4984

Review-Url: https://codereview.chromium.org/1976603005
Cr-Commit-Position: refs/heads/master@{#36233}
2016-05-13 11:05:57 +00:00
mstarzinger
7656970456 [compiler] Move list of inlined functions to Crankshaft.
The data-structure in question is only used by Crankshaft, it can safely
be moved into the backend to avoid exposure through the CompilationInfo.

R=bmeurer@chromium.org

Review-Url: https://codereview.chromium.org/1977473002
Cr-Commit-Position: refs/heads/master@{#36232}
2016-05-13 10:34:14 +00:00
mlippautz
b32f9599be [api] Clarify expectations of ArrayBuffer::Allocator in API
BUG=chromium:611688
LOG=Y
R=jochen@chromium.org

Review-Url: https://codereview.chromium.org/1978773002
Cr-Commit-Position: refs/heads/master@{#36231}
2016-05-13 10:13:38 +00:00
mstarzinger
c3cf2607f6 [compiler] Avoid passing CompilationInfo to profiler.
This completely removes any potential for a side-channel between the
various compiler backends and the profiler. The CompilationInfo is no
longer passed.

R=yangguo@chromium.org

Review-Url: https://codereview.chromium.org/1970193002
Cr-Commit-Position: refs/heads/master@{#36230}
2016-05-13 09:46:41 +00:00
mstarzinger
29001f44fc [compiler] Profiler reconstructs inlined frames for deopts.
This makes the profiler reconstruct inlined function frames at eager
deopt points from the deoptimization data. The main goal of this is to
remove the last side-channel where Crankshaft communicates directly to
the profiler. This is the last preparatory step towards deprecating the
side-channel in question.

R=yangguo@chromium.org

Review-Url: https://codereview.chromium.org/1973993002
Cr-Commit-Position: refs/heads/master@{#36229}
2016-05-13 08:51:24 +00:00
titzer
7cd1a7f768 [wasm] Remove the use of the "external" bit on OldFunctions section.
This is a first step to removing the support for the OldFunctions
section altogether, which will greatly simplify the encoder and remove
the need to do local variable remapping in asm->wasm.

R=bradnelson@chromium.org,aseemgarg@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/1974933002
Cr-Commit-Position: refs/heads/master@{#36228}
2016-05-13 08:46:40 +00:00
pierre.langlois
60fb6ea1b8 [turbofan] ARM64: Support shifted indexes in loads and stores
This patch adds support for the `Operand2_R_LSL_I` addressing mode to
loads and stores. This allows merging a shift instruction into a
MemoryOperand. Since the shift immediate is restricted to the log2 of
the operation width, the opportunities to hit this are slim. However,
Ignition's bytecode handlers hit this case all the time:

kind = BYTECODE_HANDLER
name = Star
compiler = turbofan
Instructions (size = 44)
0x23e67280     0  add x1, x19, #0x1 (1)
0x23e67284     4  ldrsb x1, [x20, x1]
0x23e67288     8  sxtw x1, w1
0x23e6728c    12  mov x2, fp
0x23e67290    16  str x0, [x2, x1, lsl #3]
                  ^^^^^^^^^^^^^^^^^^^^^
0x23e67294    20  add x19, x19, #0x2 (2)
0x23e67298    24  ldrb w1, [x20, x19]
0x23e6729c    28  ldr x1, [x21, x1, lsl #3]
                  ^^^^^^^^^^^^^^^^^^^^^
0x23e672a0    32  br x1

Additionally, I noticed the optimisation occurs once in both the
`StringPrototypeCharAt` and `StringPrototypeCharCodeAt` turbofan stubs.

BUG=

Review-Url: https://codereview.chromium.org/1972103002
Cr-Commit-Position: refs/heads/master@{#36227}
2016-05-13 07:58:59 +00:00
yangguo
2e86946f0b Remove unused parameter from IsVisibleInStackTrace.
R=cbruni@chromium.org

Review-Url: https://codereview.chromium.org/1974243002
Cr-Commit-Position: refs/heads/master@{#36226}
2016-05-13 07:44:45 +00:00
hablich
31b9ba3bc8 Revert of [Reland] Implement CPU time for OS X and POSIX. (patchset #1 id:1 of https://codereview.chromium.org/1966183003/ )
Reason for revert:
Blocks roll: https://codereview.chromium.org/1972303002/

Original issue's description:
> [Reland] Implement CPU time for OS X and POSIX.
>
> V8 tracing controller uses 2 clocks: wall clock and cpu clock. This patch
> implements CPU time for OS X and POSIX to provide more accurate
> accounting of CPU time used by each thread.
>
> BUG=v8:4984
> LOG=n
>
> Committed: https://crrev.com/efa27fb25e1fa5b8465f4af710086b73b0cba660
> Cr-Commit-Position: refs/heads/master@{#36213}

TBR=fmeawad@chromium.org,jochen@chromium.org,rsesek@chromium.org,bmeurer@chromium.org,lpy@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:4984

Review-Url: https://codereview.chromium.org/1977753002
Cr-Commit-Position: refs/heads/master@{#36225}
2016-05-13 07:09:57 +00:00
machenbach
a05ecb05b6 Revert of add UseCounters for NonOctalDecimalIntegerLiteral in strict mode (patchset #6 id:100001 of https://codereview.chromium.org/1948403002/ )
Reason for revert:
[Sheriff] Breaks
https://build.chromium.org/p/client.v8.ports/builders/V8%20Arm%20-%20debug%20builder/builds/602

Original issue's description:
> In parallel to the strict octal check that would reject `012` in strict mode, this patch collects UseCounters for `089` in strict mode. The spec says this should be an error, but this patch does not report it as such.
>
> BUG=v8:4973
> LOG=y
>
> Committed: https://crrev.com/d0b6686c14339bd5d0aeaf610705c7ed85393e1f
> Cr-Commit-Position: refs/heads/master@{#36221}

TBR=littledan@chromium.org,caitpotter88@gmail.com,jwolfe@igalia.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:4973

Review-Url: https://codereview.chromium.org/1970333004
Cr-Commit-Position: refs/heads/master@{#36224}
2016-05-13 06:53:52 +00:00
v8-autoroll
6924245918 Update V8 DEPS.
Rolling v8/build to b9f715e76c74cb252f60796f4276888cd5b4b5fb

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

Review-Url: https://codereview.chromium.org/1972923005
Cr-Commit-Position: refs/heads/master@{#36223}
2016-05-13 03:31:45 +00:00
vogelheim
bb04e1243e Remove Expression::bounds_, in order to conserve memory during parsing.
Expression::bounds_ is used only by a subset of compile passes, but the
data structure occupies space for every Expression node ever parsed. This
unneccessarily increases memory consumption. Particularly, peak memory
consumption during startup, which may cause out-of-memory errors.

This CL
- removes Expression::bounds_;
- introduces an AstTypeBounds container, which mappes Expression* to Bounds;
- modifies the code that actually requires bounds information, namely
  Crankshaft compile and AsmWasmBuilder, to instantiate such an AstTypeBounds
  container before typing and to pass it to the code that consumes this
  information; and
- modifies all accesses to Expression::bounds_ to instead access the bounds
  via the container instead.

Additionally, this rewrites test-ast-expression-visitor. The reason is that
this code attempted to test AstExpressionVisitor but did so exclusively
through its subclass ExpressionTypeCollector, meaning that the test dealt
almost exclusively with type bounds despite the class-under-test having
no knowledge or functionality related to it. Worse, the test was written
in a way to assume that type bounds were available outside & after
compilation, which is something this change changes.

BUG=v8:4947

Review-Url: https://codereview.chromium.org/1968383002
Cr-Commit-Position: refs/heads/master@{#36222}
2016-05-12 22:24:30 +00:00
jwolfe
d0b6686c14 In parallel to the strict octal check that would reject 012 in strict mode, this patch collects UseCounters for 089 in strict mode. The spec says this should be an error, but this patch does not report it as such.
BUG=v8:4973
LOG=y

Review-Url: https://codereview.chromium.org/1948403002
Cr-Commit-Position: refs/heads/master@{#36221}
2016-05-12 20:54:14 +00:00
oth
02b7373ab1 [interpreter] Introduce bytecode generation pipeline.
This change introduces a pipeline for the final stages of
bytecode generation.

The peephole optimizer is made distinct from the BytecodeArrayBuilder.

A new BytecodeArrayWriter is responsible for writing bytecode. It
also keeps track of the maximum register seen and offers a potentially
smaller frame size.

R=rmcilroy@chromium.org
LOG=N
BUG=v8:4280

Review-Url: https://codereview.chromium.org/1947403002
Cr-Commit-Position: refs/heads/master@{#36220}
2016-05-12 19:20:04 +00:00
bmeurer
fa7460adbc [turbofan] Fix optimized lowering of Math.imul.
We eagerly inserted Int32Mul for Math.imul during builtin lowering and
messed up with the types, which confused the representation selection.
This adds a proper NumberImul operator, and fixes the builtin reducer to
do the right thing according to the spec.

R=mstarzinger@chromium.org
BUG=v8:5006
LOG=n

Review-Url: https://codereview.chromium.org/1971163002
Cr-Commit-Position: refs/heads/master@{#36219}
2016-05-12 18:43:32 +00:00
jacob.bramley
83b9e1bee4 [arm] Clean up handling of usat.
The usat instruction is available from ARMv6, so there's no need to
check for the ARMv7 feature before using it. ARMv6 is the oldest
supported architecture in V8.

Correcting this allows the removal of a special case for predictable
code size.

BUG=

Review-Url: https://codereview.chromium.org/1974903002
Cr-Commit-Position: refs/heads/master@{#36218}
2016-05-12 18:20:30 +00:00
rmcilroy
e8f5a2723c Add V8.Execute histogram to measure time spent executing JS code.
Adds a V8.Execute histogram to measure the amount of time spent executing
JS code.

BUG=v8:4865
LOG=N

Review-Url: https://codereview.chromium.org/1974003002
Cr-Commit-Position: refs/heads/master@{#36217}
2016-05-12 17:12:30 +00:00
mstarzinger
f73cf983c0 [wasm] Add flag to validate asm.js modules.
This adds the --validate-asm flag which will trigger validation of all
asm.js modules before they are being compiled. In case a module doesn't
pass validation, a warning will be printed, but compilation as well as
execution will continue unhampered.

R=mvstanton@chromium.org

Review-Url: https://codereview.chromium.org/1972593002
Cr-Commit-Position: refs/heads/master@{#36216}
2016-05-12 16:36:24 +00:00
adamk
4a7b9b973b [cleanup] Split ForOf and ForIn AST nodes apart as they share little
Also make all AstVisitors consistently visit all the relevant parts
of ForOfStatement. PrettyPrinter no longer fares well, but given
how much desugaring happens to ForOf in the parser, any pretty-printed
view of it isn't going to be human readable. AstPrinter, on the other
hand, now gives a realistic view of what's been generated for for-of.

Review-Url: https://codereview.chromium.org/1968753004
Cr-Commit-Position: refs/heads/master@{#36215}
2016-05-12 16:27:16 +00:00
nikolaos
8f6556bd19 Add callstats.py run --refresh flag
This flag forces the page to (soft) refresh a given number of times for
each iteration.  The statistics of all refreshes are collected in the
same file.

R=cbruni@chromium.org, mvstanton@chromium.org
BUG=
LOG=N

Review-Url: https://codereview.chromium.org/1967123002
Cr-Commit-Position: refs/heads/master@{#36214}
2016-05-12 15:55:53 +00:00