Commit Graph

30713 Commits

Author SHA1 Message Date
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
lpy
efa27fb25e [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

Review-Url: https://codereview.chromium.org/1966183003
Cr-Commit-Position: refs/heads/master@{#36213}
2016-05-12 15:35:38 +00:00
ahaas
481502dad9 [turbofan] Introduce new operators Float32SubPreserveNan and Float64SubPreserveNan for wasm.
The operators are needed because the wasm spec requires that nan bits are preserved.

R=titzer@chromium.org

Review-Url: https://codereview.chromium.org/1973493003
Cr-Commit-Position: refs/heads/master@{#36212}
2016-05-12 14:25:45 +00:00
machenbach
51169f0c5d [tools] Use sandbox in callstats script
BUG=chromium:611010
NOTRY=true

Review-Url: https://codereview.chromium.org/1976593002
Cr-Commit-Position: refs/heads/master@{#36211}
2016-05-12 14:12:13 +00:00
machenbach
ad609ef1d1 [gn] Use external startup data by default
BUG=chromium:474921
LOG=n
NOTRY=true

Review-Url: https://codereview.chromium.org/1971133002
Cr-Commit-Position: refs/heads/master@{#36210}
2016-05-12 14:12:12 +00:00
hablich
b33f9a6f24 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

Review-Url: https://codereview.chromium.org/1974773002
Cr-Commit-Position: refs/heads/master@{#36209}
2016-05-12 13:29:23 +00:00
clemensh
f0523e3046 [wasm] Add UTF-8 validation
Names passed for imports and exports are checked during decoding,
leading to errors if they are no valid UTF-8. Function names are not
checked during decode, but rather lead to undefined being returned at
runtime if they are not UTF-8.

We need to do these checks on the Wasm side, since the factory
methods assume to get valid UTF-8 strings.

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

Review-Url: https://codereview.chromium.org/1967023004
Cr-Commit-Position: refs/heads/master@{#36208}
2016-05-12 13:02:14 +00:00
ahaas
4aec7ba1aa [wasm] Implement parallel compilation.
With this CL it is possible to compile a wasm module with multiple
threads in parallel. Parallel compilation works as follows:

1)   The main thread allocates a compilation unit for each wasm function.
2)   The main thread spawns WasmCompilationTasks which run on the
     background threads.
3.a) The background threads and the main thread pick one compilation unit
     at a time and execute the parallel phase of the compilation unit.
     After finishing the execution of the parallel phase, the compilation
     unit is stored in a result queue.
3.b) If the result queue contains a compilation unit, the main thread
     dequeues it and finishes its compilation.
4)   After the execution of the parallel phase of all compilation units has
     started, the main thread waits for all WasmCompilationTasks to finish.
5)   The main thread finalizes the compilation of the module.

I'm going to add some additional tests before committing this CL.

R=titzer@chromium.org, bmeurer@chromium.org, mlippautz@chromium.org, mstarzinger@chromium.org

Committed: https://crrev.com/17215438659d8ff2d7d55f95226bf8a1477ccd79
Cr-Commit-Position: refs/heads/master@{#36178}

Review-Url: https://codereview.chromium.org/1961973002
Cr-Commit-Position: refs/heads/master@{#36207}
2016-05-12 11:58:48 +00:00
cbruni
130ccb953c [debugging] change default array maps elements kind to some more sane values.
BUG=

Review-Url: https://codereview.chromium.org/1870693002
Cr-Commit-Position: refs/heads/master@{#36206}
2016-05-12 11:56:23 +00:00
jgruber
4548df88a3 [compiler] Remove explicit live edit check for lazy compilation
Any function that is being compiled for live edit is marked as debug.

R=yangguo@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/1977433002
Cr-Commit-Position: refs/heads/master@{#36205}
2016-05-12 11:27:11 +00:00
jgruber
b87bdd1745 Allow Script::FindSharedFunctionInfo to return toplevel functions
We will use this function to find toplevel function infos in an upcoming
commit.

R=yangguo@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/1970153002
Cr-Commit-Position: refs/heads/master@{#36204}
2016-05-12 11:24:34 +00:00
jochen
9c9708ac91 Interceptors expect the receiver to always be an JSReceiver.
BUG=chromium:609134
R=verwaest@chromium.org

Review-Url: https://codereview.chromium.org/1973513002
Cr-Commit-Position: refs/heads/master@{#36203}
2016-05-12 11:06:11 +00:00
clemensh
bafa239da0 [wasm] Patch trapping position into stack trace
And add more tests for traps at different locations.

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

Review-Url: https://codereview.chromium.org/1924253002
Cr-Commit-Position: refs/heads/master@{#36202}
2016-05-12 09:08:40 +00:00
cbruni
f87014ebde [runtime] Avoid @@isConcatSpreadable lookup for fast path Array.prototype.concat
Currently we do not check for @@isConcatSpreadable properly. If the Symbol is
set on the Array.prototype or Object.prototype the current fast paths fail.
This CL adds a fix to globally invalidate a isConcatSpreadable_protector.

Drive-by-fix: use named accessors for context variables

LOG=N
BUG=chromium:542504, v8:903

Review-Url: https://codereview.chromium.org/1409123003
Cr-Commit-Position: refs/heads/master@{#36201}
2016-05-12 08:52:36 +00:00
jgruber
792e9c6d16 [debugger] Prevent shared function info duplicates
Clear the list of shared function infos attached to a script before
compiling for live edit in order to avoid duplicates. This was lost in
058deb2713. Additionally, we restore the
original list of shared function infos once we're done with live edit
work.

R=yangguo@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/1969293003
Cr-Commit-Position: refs/heads/master@{#36200}
2016-05-12 08:40:48 +00:00
machenbach
51db73923d Revert of Change v8_snapshot_toolchain to be a GN build arg. (patchset #3 id:40001 of https://codereview.chromium.org/1969693002/ )
Reason for revert:
Blocks the roll: https://codereview.chromium.org/1974733002/

Breaks:
https://build.chromium.org/p/tryserver.chromium.linux/builders/chromeos_daisy_chromium_compile_only_ng/builds/136166

Original issue's description:
> Change v8_snapshot_toolchain to be a GN build arg.
>
> It is likely that CrOS and other distros will want to be
> able to build the v8 snapshot with a custom toolchain.
>
> This CL makes snapshot_toolchain a declared build arg, and
> renames it to v8_snapshot_toolchain to minimize the risk
> of a name collision.
>
> R=machenbach@chromium.org, jochen@chromium.org
> BUG=608596
>
> Committed: https://crrev.com/2ae74af8f405f461d8e44d60b978f940673e46c8
> Cr-Commit-Position: refs/heads/master@{#36193}

TBR=jochen@chromium.org,dpranke@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=608596

Review-Url: https://codereview.chromium.org/1975713002
Cr-Commit-Position: refs/heads/master@{#36199}
2016-05-12 08:36:05 +00:00
jochen
6cb3842798 Remove v8_toolset_for_d8 flag
R=machenbach@chromium.org
BUG=chromium:609107

Review-Url: https://codereview.chromium.org/1969793002
Cr-Commit-Position: refs/heads/master@{#36198}
2016-05-12 07:49:44 +00:00
zhengxing.li
d748daa355 X87: [Interpreter] Fix incorrect frame walking in arguments create stubs.
port 40f345416f (r36181)

  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).

BUG=

Review-Url: https://codereview.chromium.org/1976483002
Cr-Commit-Position: refs/heads/master@{#36197}
2016-05-12 07:29:26 +00:00
bmeurer
26ea37075a [turbofan] Remove defensive programming for missing load/store eager bailout points.
We now have all the required eager bailout points in place, so we can
remove the defensive programming in JSNativeContextSpecialization.

R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/1973773003
Cr-Commit-Position: refs/heads/master@{#36196}
2016-05-12 07:22:13 +00:00
yangguo
506999c306 [debugger] make strict eval-scope visible to debugging.
R=jgruber@chromium.org,kozyatinskiy@chromium.org
BUG=chromium:590256
LOG=N

Review-Url: https://codereview.chromium.org/1961963002
Cr-Commit-Position: refs/heads/master@{#36195}
2016-05-12 06:57:10 +00:00
bmeurer
8f1e31fe75 [turbofan] Deoptimize on access to neutered typed arrays.
We got the condition wrong and actually deoptimized when the typed array
was not neutered. This fixes the deopt loop in Math.random and actually
many programs that use typed arrays.

R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/1970123002
Cr-Commit-Position: refs/heads/master@{#36194}
2016-05-12 06:29:55 +00:00
dpranke
2ae74af8f4 Change v8_snapshot_toolchain to be a GN build arg.
It is likely that CrOS and other distros will want to be
able to build the v8 snapshot with a custom toolchain.

This CL makes snapshot_toolchain a declared build arg, and
renames it to v8_snapshot_toolchain to minimize the risk
of a name collision.

R=machenbach@chromium.org, jochen@chromium.org
BUG=608596

Review-Url: https://codereview.chromium.org/1969693002
Cr-Commit-Position: refs/heads/master@{#36193}
2016-05-12 05:37:54 +00:00
v8-autoroll
342cdc41e4 Update V8 DEPS.
Rolling v8/build to eeaf94824520078abaa924c17562d31dd531b04d

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

Review-Url: https://codereview.chromium.org/1968363003
Cr-Commit-Position: refs/heads/master@{#36192}
2016-05-12 03:30:54 +00:00
littledan
2e8c3c9e2b Fix the no-i18n build
TBR=adamk@chromium.org

Review-Url: https://codereview.chromium.org/1969263002
Cr-Commit-Position: refs/heads/master@{#36191}
2016-05-12 02:42:42 +00:00
littledan
0bd50885e8 Remove certain non-standard properties from Intl
This patch removes the following properties, as their use count is
very low, they are V8-only, and not on a standards track.
- v8Parse
- resolved
- pattern

v8BreakIterator is left in as it has significantly more usage.

BUG=v8:3785
R=adamk,jshin@chromium.org

Review-Url: https://codereview.chromium.org/1968893002
Cr-Commit-Position: refs/heads/master@{#36190}
2016-05-12 00:34:48 +00:00
lpy
bfb1c9e63c Revert of Implement CPU time for OS X and POSIX. (patchset #10 id:180001 of https://codereview.chromium.org/1959103004/ )
Reason for revert:
Buildbot is failing on Mac release build.

Original issue's description:
> 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/025f3d262bab2748362374f1b90ac723a9655ee4
> Cr-Commit-Position: refs/heads/master@{#36188}

TBR=jochen@chromium.org,bmeurer@chromium.org,fmeawad@chromium.org,rsesek@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/1966173003
Cr-Commit-Position: refs/heads/master@{#36189}
2016-05-11 21:17:24 +00:00
lpy
025f3d262b 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

Review-Url: https://codereview.chromium.org/1959103004
Cr-Commit-Position: refs/heads/master@{#36188}
2016-05-11 21:03:41 +00:00
jshin
b348d47bb9 Use ICU case conversion/transliterator for case conversion
When I18N is enabled, use ICU's case conversion API and transliteration
API [1] to implement String.prototype.to{Upper,Lower}Case and
String.prototype.toLocale{Upper,Lower}Case.

* ICU-based case conversion was implemented in runtime-i18n.cc/i18n.js
* The above 4 functions are overridden with those in i18n.js when
  --icu_case_mapping flag is turned on. To control the override by the flag,
  they're overriden in icu-case-mapping.js

Previously, toLocale{U,L}Case just called to{U,L}Case so that they didn't
support locale-sensitive case conversion for Turkic languages (az, tr),
Greek (el) and Lithuanian (lt).

Before ICU APIs for the most general case are called, a fast-path for Latin-1
is tried. It's taken from Blink and adopted as necessary. This fast path
is always tried for to{U,L}Case. For toLocale{U,L}Case, it's only taken
when a locale (explicitly specified or default) is not in {az, el, lt, tr}.

With these changes, a build with --icu_case_mapping=true passes a bunch
of tests in test262/intl402/Strings/* and intl/* that failed before.

Handling of pure ASCII strings (aligned at word boundary) are not as fast
as Unibrow's implementation that uses word-by-word case conversion. OTOH,
Latin-1 input handling is faster than Unibrow. General Unicode input
handling is slower but more accurate.

See https://docs.google.com/spreadsheets/d/1KJCJxKc1FxFXjwmYqABS0_2cNdPetvnd8gY8_HGSbrg/edit?usp=sharing for the benchmark.

This CL started with http://crrev.com/1544023002#ps200001 by littledan@,
but has changed significantly since.

[1] See why transliteration API is needed for uppercasing in Greek.
    http://bugs.icu-project.org/trac/ticket/10582

R=yangguo
BUG=v8:4476,v8:4477
LOG=Y
TEST=test262/{built-ins,intl402}/Strings/*, webkit/fast/js/*, mjsunit/string-case,
     intl/general/case*

Review-Url: https://codereview.chromium.org/1812673005
Cr-Commit-Position: refs/heads/master@{#36187}
2016-05-11 19:03:04 +00:00
bjaideep
adcc511986 PPC: [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=v8:4928
LOG=N

Review-Url: https://codereview.chromium.org/1966263002
Cr-Commit-Position: refs/heads/master@{#36186}
2016-05-11 17:38:49 +00:00
bjaideep
8bb88e8587 PPC: Cleanup allocation folding states in lithium.
Port 6e15433db4

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

BUG=chromium:580959
LOG=N

Review-Url: https://codereview.chromium.org/1970563004
Cr-Commit-Position: refs/heads/master@{#36185}
2016-05-11 17:36:23 +00:00
bjaideep
ce7d7761ac PPC: [crankshaft] Fragmentation-free allocation folding.
Port 61f5fbbb19

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, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com

BUG=chromium:580959
LOG=N

Review-Url: https://codereview.chromium.org/1970633002
Cr-Commit-Position: refs/heads/master@{#36184}
2016-05-11 17:00:21 +00:00
ulan
12fa3fff65 Fix live bytes counter in large object space after right trimming.
BUG=chromium:609761
LOG=NO

Review-Url: https://codereview.chromium.org/1964143004
Cr-Commit-Position: refs/heads/master@{#36183}
2016-05-11 16:57:46 +00:00
ahaas
be8c688ade Revert of [wasm] Implement parallel compilation. (patchset #6 id:100001 of https://codereview.chromium.org/1961973002/ )
Reason for revert:
The ThreadSanitizer finds data races.

Original issue's description:
> [wasm] Implement parallel compilation.
>
> With this CL it is possible to compile a wasm module with multiple
> threads in parallel. Parallel compilation works as follows:
>
> 1)   The main thread allocates a compilation unit for each wasm function.
> 2)   The main thread spawns WasmCompilationTasks which run on the
>      background threads.
> 3.a) The background threads and the main thread pick one compilation unit
>      at a time and execute the parallel phase of the compilation unit.
>      After finishing the execution of the parallel phase, the compilation
>      unit is stored in a result queue.
> 3.b) If the result queue contains a compilation unit, the main thread
>      dequeues it and finishes its compilation.
> 4)   After the execution of the parallel phase of all compilation units has
>      started, the main thread waits for all WasmCompilationTasks to finish.
> 5)   The main thread finalizes the compilation of the module.
>
> I'm going to add some additional tests before committing this CL.
>
> R=titzer@chromium.org, bmeurer@chromium.org, mlippautz@chromium.org, mstarzinger@chromium.org
>
> Committed: https://crrev.com/17215438659d8ff2d7d55f95226bf8a1477ccd79
> Cr-Commit-Position: refs/heads/master@{#36178}

TBR=bmeurer@chromium.org,mlippautz@chromium.org,mstarzinger@chromium.org,titzer@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/1965243003
Cr-Commit-Position: refs/heads/master@{#36182}
2016-05-11 15:59:44 +00:00
rmcilroy
40f345416f [Interpreter] Fix incorrect frame walking in arguments create stubs
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).

BUG=v8:4928
LOG=N
CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_nosnap_dbg

Review-Url: https://codereview.chromium.org/1949023003
Cr-Commit-Position: refs/heads/master@{#36181}
2016-05-11 15:07:52 +00:00
vogelheim
0bc5bf3a59 Remove TypingResetter.
This code was used exclusively by its own unit test and can be safely removed.

BUG=v8:4947
LOG=N

Review-Url: https://codereview.chromium.org/1965373002
Cr-Commit-Position: refs/heads/master@{#36180}
2016-05-11 14:49:37 +00:00
verwaest
73ee79438c Support subclassing API functions.
When instantiating a subclassed API function, the instance cache is avoided. There is currently no direct API yet to instantiate a Template while passing in a new.target. It probably makes sense to extend ObjectTemplate::NewInstance to accept a new.target, in line with Reflect.construct.

BUG=v8:3330, v8:5001

Review-Url: https://codereview.chromium.org/1972613002
Cr-Commit-Position: refs/heads/master@{#36179}
2016-05-11 14:22:36 +00:00
ahaas
1721543865 [wasm] Implement parallel compilation.
With this CL it is possible to compile a wasm module with multiple
threads in parallel. Parallel compilation works as follows:

1)   The main thread allocates a compilation unit for each wasm function.
2)   The main thread spawns WasmCompilationTasks which run on the
     background threads.
3.a) The background threads and the main thread pick one compilation unit
     at a time and execute the parallel phase of the compilation unit.
     After finishing the execution of the parallel phase, the compilation
     unit is stored in a result queue.
3.b) If the result queue contains a compilation unit, the main thread
     dequeues it and finishes its compilation.
4)   After the execution of the parallel phase of all compilation units has
     started, the main thread waits for all WasmCompilationTasks to finish.
5)   The main thread finalizes the compilation of the module.

I'm going to add some additional tests before committing this CL.

R=titzer@chromium.org, bmeurer@chromium.org, mlippautz@chromium.org, mstarzinger@chromium.org

Review-Url: https://codereview.chromium.org/1961973002
Cr-Commit-Position: refs/heads/master@{#36178}
2016-05-11 14:08:59 +00:00
mstarzinger
32049620d2 [compiler] Pass inlining_id via relocation info.
This passes the inlining_id of deoptimization points via the relocation
info instead of via a side-channel to the CPU profiler. This is one step
towards deprecating the side-channel in question and avoid the need for
performing a lookup of the return address of the deopt point.

R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/1956693002
Cr-Commit-Position: refs/heads/master@{#36177}
2016-05-11 14:06:38 +00:00
ishell
af02c0336d [runtime] Record runtime call stats for Map::TransitionTo*Property, Map::SetPrototype and property deletion to separate buckets.
Review-Url: https://codereview.chromium.org/1973473002
Cr-Commit-Position: refs/heads/master@{#36176}
2016-05-11 13:00:55 +00:00
ishell
61b49b3c09 [runtime] Refine runtime call stats for IC misses.
Now we are able to distinguish different kind of misses based on which handler/stub did we actually use.

Review-Url: https://codereview.chromium.org/1969733002
Cr-Commit-Position: refs/heads/master@{#36175}
2016-05-11 12:38:25 +00:00
titzer
bf90d9a33a [formatting] Remove all double blank lines in WASM code.
R=ahaas@chromium.org,mstarzinger@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/1970543003
Cr-Commit-Position: refs/heads/master@{#36174}
2016-05-11 12:36:04 +00:00
cbruni
c4af1ba7e4 [tools] improving callstats.html istructions and making callstats.py executable
BUG=

Review-Url: https://codereview.chromium.org/1964453002
Cr-Commit-Position: refs/heads/master@{#36173}
2016-05-11 12:33:40 +00:00
nikolaos
5fa1c61ee0 Add script injection when replaying with callstats.py
This allows benchmarking without --single-process and correctly
gathering --runtime-call-stats numbers.

Add optional parameter to %GetAndResetRuntimeCallStats

-  Without any parameter, it returns a string with the runtime call
   statistics (as before).
-  With one string parameter, it appends the statistics to the file with
   that file name.
-  With one integer parameter (which must be 1=stdout or 2=stderr), it
   prints the statistics to the output with of that file descriptor.

The injected script is automatically generated.
Also, callstats.py does not have a hardwired DEFAULT_SITES anymore.

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

Review-Url: https://codereview.chromium.org/1966193002
Cr-Commit-Position: refs/heads/master@{#36172}
2016-05-11 12:24:37 +00:00