Commit Graph

18975 Commits

Author SHA1 Message Date
yangguo@chromium.org
a2099f5292 Serialize all external strings except for native source code strings.
R=mvstanton@chromium.org

Review URL: https://codereview.chromium.org/604373008

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24391 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 09:39:13 +00:00
svenpanne@chromium.org
6e3b54ae36 Merged FeedbackSlotInterface into AstNode, removing the need for a 2nd vtable.
This tiny change shaves off 112MB from the peak memory usage in the
bug mentioned below, more to come...

BUG=417697
LOG=y
R=mvstanton@chromium.org

Review URL: https://codereview.chromium.org/611393004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24390 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 09:38:28 +00:00
yurys@chromium.org
6482fb3ee4 Extend CPU profiler with mapping ticks to source lines
The idea behind of this solution is to use the existing "relocation info" instead of consumption the CodeLinePosition events emitted by the V8 compilers.
During generation code and relocation info are generated simultaneously.
When code generation is done you each code object has associated "relocation info".
Relocation information lets V8 to mark interesting places in the generated code: the pointers that might need to be relocated (after garbage collection),
correspondences between the machine program counter and source locations for stack walking.

This patch:
1. Add more source positions info in reloc info to make it suitable for source level mapping.
The amount of data should not be increased dramatically because (1) V8 already marks interesting places in the generated code and
(2) V8 does not write redundant information (it writes a pair (pc_offset, pos) only if pos is changed and skips other).
I measured it on Octane benchmark - for unoptimized code the number of source positions may achieve 2x ('lin_solve' from NavierStokes benchmark).

2. When a sample happens, CPU profiler finds a code object by pc, then use its reloc info to match the sample to a source line.
If a source line is found that hit counter is increased by one for this line.

3. Add a new public V8 API to get the hit source lines by CDT CPU profiler.
Note that it's expected a minor patch in Blink to pack the source level info in JSON to be shown.

4.Add a test that checks how the samples are distributed through source lines.
It tests two cases: (1) relocation info created during code generation and (2) relocation info associated with precompiled function's version.

Patch from Denis Pravdin <denis.pravdin@intel.com>
BUG=None
LOG=Y
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/616963005

Patch from Denis Pravdin <denis.pravdin@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24389 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 09:20:37 +00:00
dcarney@chromium.org
944858e7d5 [turbofan] support all shift operands on x64
R=bmeurer@chromium.org

BUG=

Review URL: https://codereview.chromium.org/615223005

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24388 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 09:08:09 +00:00
dcarney@chromium.org
e9fcaa4be9 [turbofan] support all shift operands on ia32
R=bmeurer@chromium.org

BUG=

Review URL: https://codereview.chromium.org/619663002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24387 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 09:04:04 +00:00
bmeurer@chromium.org
5899cc8ca7 [turbofan] Fix lowering of typed loads/stores.
We can only access to external typed arrays; lowering of internal
typed arrays would require a map check plus eager deoptimization.
Also embed the array buffer reference directly instead of embedding
the typed array.

TEST=cctest,mjsunit,unittests
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/621863002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24386 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 08:38:37 +00:00
machenbach@chromium.org
34bc5595e5 Skip test on all architectures but arm.
BUG=
R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/622713003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24385 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 08:37:51 +00:00
jochen@chromium.org
d709e6aa13 Change minimum code range size to 3MB
There will be at least 2MB of guard pages around allocatable code memory

BUG=none
R=svenpanne@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/617103006

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24384 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 08:28:29 +00:00
jochen@chromium.org
906d16a750 Update the documentation of Isolate::GetCodeRange
On Win64, the first page is reserved for the embedder.

BUG=v8:3597
R=svenpanne@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/619233003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24383 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 08:28:04 +00:00
jochen@chromium.org
5f47fe15e2 Remove support for parallel sweeping
BUG=none
R=hpayer@chromium.org
LOG=y

Review URL: https://codereview.chromium.org/618323007

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24382 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 08:24:48 +00:00
yangguo@chromium.org
4f7874e33e Fix name clashes in cctests.
R=marja@chromium.org

Review URL: https://codereview.chromium.org/617123006

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24381 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 08:18:03 +00:00
hpayer@chromium.org
2bfbe0d862 Fix Windows compile.
BUG=
R=yangguo@chromium.org

Review URL: https://codereview.chromium.org/619853007

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24380 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 07:42:11 +00:00
hpayer@chromium.org
ad6b41ffa7 Force scavenge in idle notification if we estimate that it will take long.
BUG=
R=ulan@chromium.org

Review URL: https://codereview.chromium.org/583593006

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24379 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 07:21:53 +00:00
yangguo@chromium.org
43ddad10b3 Handle external strings in the code serializer.
R=mvstanton@chromium.org

Review URL: https://codereview.chromium.org/623453003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24378 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 07:12:46 +00:00
yangguo@chromium.org
2134c5c0ba Fulfill some code serializer related TODOs.
R=mvstanton@chromium.org

Review URL: https://codereview.chromium.org/606083004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24377 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 07:04:28 +00:00
yangguo@chromium.org
321dad9b8e Introduce v8::Object::GetIsolate().
API=v8::Object::GetIsolate()
LOG=Y
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/617263003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24376 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 06:52:39 +00:00
marja@chromium.org
e1a5abb6c8 Debug a mystery crash bug in script streaming.
This adds a bunch of checks so we hopefully get more detailed information about
what exactly goes wrong.

R=jochen@chromium.org
BUG=

Review URL: https://codereview.chromium.org/619583005

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24373 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 16:54:42 +00:00
dusan.milosavljevic@imgtec.com
2b6280a13b MIPS64: Fix ConvertDToI test.
TEST=cctest/test-code-stubs-mips64/ConvertDToI
BUG=
R=paul.lind@imgtec.com

Review URL: https://codereview.chromium.org/616853004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24372 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 16:25:01 +00:00
rodolph.perfetta@arm.com
9d3eda079e [turbofan] re-enable some tests for arm64.
Those tests were disabled because of an issue in TruncateDoubleToI which has
been fixed since.

BUG=
R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/605253002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24371 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 15:47:40 +00:00
yangguo@chromium.org
b84614983f Attempt to fix GC mole failures.
TBR=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/614393002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24370 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 15:39:12 +00:00
machenbach@chromium.org
c1e462cd64 Whitespace change for branch testing.
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24369 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 14:10:08 +00:00
mstarzinger@chromium.org
3bc3df9a27 Implement inlined stack-check guards in TurboFan.
R=bmeurer@chromium.org
TEST=cctest/test-run-stackcheck/TerminateAtMethodEntry

Review URL: https://codereview.chromium.org/621833003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24367 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 14:03:02 +00:00
jkummerow@chromium.org
1bb52d0da8 Fix Hydrogen's BuildStore()
BUG=chromium:417508
LOG=y
R=jarin@chromium.org

Review URL: https://codereview.chromium.org/612423002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24366 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 13:17:34 +00:00
svenpanne@chromium.org
d6eea5742d Endian changes, support 64bit big endian
These are some changes split off from https://codereview.chromium.org/422063005

frames-inl.h, frames.h
based on 05db7d2d71
On 64bit big endian systems, the integer value is in the second slot, thus we need a new offset.

objects-inl.h, objects.h
based on 09b680b2af
Similarly, the hash slot is an integer field and we need to do the right thing on 64bit big endian systems

objects.cc
based on: 065742b078
Prettier printing of constant pools

test-strings.cc
based on:  9889d60cd6
endian fixes

BUG=
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/551803004

Patch from Andrew Low <andrew_low@ca.ibm.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24365 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 13:14:14 +00:00
dslomov@chromium.org
bedfa9e710 Extract runtime functions for classes into a separate file.
R=yangguo@chromium.org

Review URL: https://codereview.chromium.org/621833002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24364 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 12:11:12 +00:00
jochen@chromium.org
f143e2e024 Fix test-spaces on win64
TBR=bmeurer@chromium.org
LOG=n
BUG=none

Review URL: https://codereview.chromium.org/615423002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24363 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 11:54:47 +00:00
yangguo@chromium.org
983205d5fd Reland "Use symbols instead of hidden properties for i18n markers."
R=dslomov@chromium.org

Review URL: https://codereview.chromium.org/618213002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24362 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 11:53:29 +00:00
yangguo@chromium.org
67f43055d2 Fix data race when concurrent compilation is aborted due to dependency change.
R=marja@chromium.org
BUG=chromium:419189
LOG=N

Review URL: https://codereview.chromium.org/616263003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24361 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 11:41:19 +00:00
mvstanton@chromium.org
b8288c7535 Don't clear the string stub at gc time in KeyedLoadIC.
Clearing this stub doesn't actually make sense, as it neither leaks
memory, nor prevents finding a new optimum stable state. As
long as strings receivers are observed, this is the best stub.
The moment we see a non-string receiver we'll go polymorphic
or generic depending on the case.

R=yangguo@chromium.org

Review URL: https://codereview.chromium.org/605013003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24360 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 11:09:06 +00:00
bmeurer@chromium.org
b9afcdcefb [turbofan] Add control input to Load and LoadElements.
Also remove the now obsolete ControlEffect operator.

TEST=cctest,mjsunit,unittests
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/620803003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24359 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 11:08:37 +00:00
mstarzinger@chromium.org
4f7eff0a21 Remove deprecated CEntryStub cache in generic lowering.
R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/619043002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24358 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 10:54:51 +00:00
dcarney@chromium.org
b3d426889d [turbofan] intel lea add multiply matchers
R=bmeurer@chromium.org

BUG=

Review URL: https://codereview.chromium.org/614013002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24357 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 10:47:14 +00:00
titzer@chromium.org
c1d79db81b Rename Int32{UMod,UDiv} to Uint32{Div,Mod} and Int64{UMod,UDiv} to Uint64{Div,Mod}.
R=bmeurer@chromium.org, mstarzinger@chromium.org
BUG=

Review URL: https://codereview.chromium.org/620773003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24356 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 10:39:11 +00:00
jochen@chromium.org
ef54daf2cc Fix clang compilation
BUG=none
TBR=svenpanne@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/621673003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24355 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 09:35:27 +00:00
jochen@chromium.org
524d185116 Don't filter out -O0 for debug configurations
BUG=none
R=svenpanne@chromium.org
LOG=n

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24354 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 09:17:19 +00:00
jochen@chromium.org
5ed0f2cecc Reserve a page at the beginning of the code range on Win64 for SEH
BUG=v8:3597
R=svenpanne@chromium.org
LOG=n

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24353 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 09:16:57 +00:00
jochen@chromium.org
259126c0d9 Remove sweeper threads
Job based sweeping is enabled since 3.29, so remove the now obsolete
thread based implementation

BUG=none
R=hpayer@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/615933003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24352 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 09:16:28 +00:00
bmeurer@chromium.org
26b181f4d0 Fix unittests.gyp for cross compiling.
TBR=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/615243003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24351 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 08:54:21 +00:00
bmeurer@chromium.org
bfd37ab267 Move unit tests to test/unittests.
As per discussion on the V8 team, this is the place we want them to live,
not following the Chrome Style Guide for this.

BUG=v8:3489
LOG=y
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/615393002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24350 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 08:34:25 +00:00
yangguo@chromium.org
cc6fe3a988 Fix ostream flushing.
TBR=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/616293002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24349 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 08:22:39 +00:00
mstarzinger@chromium.org
c3a2c5740e Add support for uint64 compares to TurboFan.
R=bmeurer@chromium.org, titzer@chromium.org
TEST=compiler-unittests/MachineOperatorTest

Review URL: https://codereview.chromium.org/615083002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24348 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 08:11:56 +00:00
bmeurer@chromium.org
67383fe700 [turbofan] Add BoundsCheckMode to ElementAccess.
This is currently only used for StoreElement. LoadElement will be
updated to make use of that in a follow-up CL (depends on additional
control input for loads first).

TEST=cctest,mjsunit
R=jarin@chromium.org, mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/617853002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24347 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 07:42:54 +00:00
yangguo@chromium.org
63851465f2 Revert "Use symbols instead of hidden properties for i18n markers."
This reverts r24345.

TBR=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/618123005

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24346 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 07:33:53 +00:00
yangguo@chromium.org
153ec0329e Use symbols instead of hidden properties for i18n markers.
Also refactor symbols in the root list.

R=dslomov@chromium.org

Review URL: https://codereview.chromium.org/614083002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24345 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 07:08:39 +00:00
svenpanne@chromium.org
356d668d8f Changes to ALLOW_UNUSED to match upcoming changes to the Chromium trunk:
* Eliminate usage of ALLOW_UNUSED to define COMPILE_ASSERT and just use
  static_assert() in all cases now that all platforms build with C++11.
* Convert remaining uses of ALLOW_UNUSED to ALLOW_UNUSED_TYPE to match how
  Chromium will be splitting this functionality.  (In Chromium we'll have both
  ALLOW_UNUSED_TYPE and ALLOW_UNUSED_LOCAL, which have different syntax to
  enable us to use these with MSVC.)

BUG=chromium:81439
TEST=none
LOG=y
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/613143004

Patch from Peter Kasting <pkasting@chromium.org>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24344 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 06:32:05 +00:00
paul.lind@imgtec.com
1659197f5d MIPS: Add cvt_d_s to disassembler.
BUG=
R=dusan.milosavljevic@imgtec.com

Review URL: https://codereview.chromium.org/605113002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24343 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 04:14:01 +00:00
dslomov@chromium.org
953af8bd9f Desugar 'super(..)' into 'super.constructor(...)'
R=arv@chromium.org, marja@chromium.org
BUG=v8:3330
LOG=N

Review URL: https://codereview.chromium.org/615043002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24340 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-30 18:12:22 +00:00
yangguo@chromium.org
21d8692c4f Remove stray edits in r24335.
TBR=aandrey@chromium.org

Review URL: https://codereview.chromium.org/615053002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24337 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-30 15:40:08 +00:00
dslomov@chromium.org
1f2ff657cd Fix style nits in test
R=arv@chromium.org

Review URL: https://codereview.chromium.org/613253002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24336 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-30 15:30:10 +00:00
yangguo@chromium.org
e68e62c891 Introduce PromiseRejectCallback.
R=aandrey@chromium.org, yurys@chromium.org, rossberg@chromium.org
API=v8::Isolate::SetPromiseRejectCallback, v8::Promise::HasHandler
LOG=Y
BUG=v8:3093

Review URL: https://codereview.chromium.org/600723005

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24335 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-30 15:29:08 +00:00