hpayer@chromium.org
e819dd2869
Shrinking of PagedSpace is done only by sweeper.
...
BUG=
Review URL: https://codereview.chromium.org/12313131
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13758 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 12:59:52 +00:00
svenpanne@chromium.org
6d5f0d8772
Avoid HEAP macro in spaces.cc
...
This was another top cause for TLS access.
BUG=v8:2487
Review URL: https://codereview.chromium.org/12340101
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13755 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 12:30:23 +00:00
hpayer@chromium.org
ab3114df68
Release evacuation candidates after parallel sweeper threads completed.
...
BUG=
Review URL: https://codereview.chromium.org/12082101
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13708 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-21 13:12:12 +00:00
hpayer@chromium.org
492396f2ab
Fixed IsSweepingComplete and EnsureSweeperProgress helper functions.
...
BUG=
Review URL: https://codereview.chromium.org/12177017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13596 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-05 15:48:59 +00:00
jkummerow@chromium.org
1c1fdc7da2
Better fix for MemoryChunk::owner().
...
Pointer arithmetic such as "owner_ - kFailureTag" is undefined behaviour
unless owner_ points to a valid object.
This allowed Clang to assume the subtraction would never be NULL,
causing problems in the caller (see https://codereview.chromium.org/12090072/ ).
To fix this, we should cast owner_ to intptr_t before doing the
arithmetic.
Review URL: https://codereview.chromium.org/12096089
Patch from Hans Wennborg <hans@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13570 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-31 15:36:24 +00:00
jkummerow@chromium.org
ddc175f244
Work around a bug in Clang that optimizes away a NULL check
...
Review URL: https://codereview.chromium.org/12090072
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13562 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-30 17:35:29 +00:00
hpayer@chromium.org
44caabb1cd
Parallel and concurrent sweeping.
...
Sweep old pointer space and old data space concurrently to the main mutator thread and in parallel.
BUG=
Review URL: https://codereview.chromium.org/11782028
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13552 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-30 12:19:32 +00:00
danno@chromium.org
c31454ac37
Use MemoryChunk-based allocation for deoptimization entry code
...
This is done by first committing the deoptimization entry code with a minimal
area size (OS::CommitPageSize) and later using CommitArea to adjust the size.
Committed: http://code.google.com/p/v8/source/detail?r=13494
Review URL: https://chromiumcodereview.appspot.com/11566011
Patch from Haitao Feng <haitao.feng@intel.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13532 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-29 09:09:55 +00:00
danno@chromium.org
63ec79a4a4
Revert r13494: "Use MemoryChunk-based allocation for deoptimization entry code"
...
This patch seems to cause crashes on Windows.
TBR=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/12049069
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13495 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-24 15:48:07 +00:00
danno@chromium.org
de17ce7701
Use MemoryChunk-based allocation for deoptimization entry code
...
This is done by first committing the deoptimization entry code with a minimal
area size (OS::CommitPageSize) and later using CommitArea to adjust the size.
Review URL: https://codereview.chromium.org/11566011
Patch from Haitao Feng <haitao.feng@intel.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13494 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-24 15:14:33 +00:00
yangguo@chromium.org
5da9e75670
Remove support for Live Object List and inspector module.
...
These were introduced in r7012 and r6379.
The reason for this is that both features are not being maintained.
They have been out-of-date for a while. Test cases do not exist.
R=mstarzinger@chromium.org
BUG=
Review URL: https://chromiumcodereview.appspot.com/11975012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13404 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-16 15:44:26 +00:00
danno@chromium.org
1f4b4625ff
Re-land Crankshaft-generated KeyedLoad stubs.
...
R=jkummerow@chromium.org
Review URL: https://chromiumcodereview.appspot.com/11528003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13236 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-18 16:25:45 +00:00
hpayer@chromium.org
9a0c9a5cf8
Fixed compilation error on Win64.
...
BUG=
Review URL: https://codereview.chromium.org/11538010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13199 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-11 20:19:37 +00:00
hpayer@chromium.org
f6f55dcd97
Prepare FreeList for parallel and concurrent sweeping.
...
BUG=
Review URL: https://codereview.chromium.org/11348174
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13198 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-11 17:45:01 +00:00
danno@chromium.org
64fc1f99cb
Revert 13157, 13145 and 13140: Crankshaft code stubs.
...
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/11498006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13179 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-10 11:09:12 +00:00
danno@chromium.org
f19959cd22
Enable stub generation using Hydrogen/Lithium (again)
...
This initial implementation generates only KeyedLoadICs using the new Hydrogen stub infrastructure.
Committed: https://code.google.com/p/v8/source/detail?r=13105
Committed: https://code.google.com/p/v8/source/detail?r=13117
Review URL: https://codereview.chromium.org/10701054
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13140 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-05 11:04:10 +00:00
danno@chromium.org
66f6a8182c
Revert 13117: "Enable stub generation using Hydrogen/Lithium (again)"
...
TBR=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/11415261
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13120 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-03 17:16:51 +00:00
danno@chromium.org
78b09625d5
Enable stub generation using Hydrogen/Lithium (again)
...
This initial implementation generates only KeyedLoadICs using the new Hydrogen stub infrastructure.
Committed: https://code.google.com/p/v8/source/detail?r=13105
Review URL: https://codereview.chromium.org/10701054
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13117 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-03 15:51:05 +00:00
danno@chromium.org
0a3bcc8c05
Revert 13105: "Enable stub generation using Hydrogen/Lithium."
...
TBR=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/11414262
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13106 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-30 17:45:45 +00:00
danno@chromium.org
c115ff4e33
Enable stub generation using Hydrogen/Lithium.
...
This initial implementation generates only KeyedLoadICs using the new Hydrogen stub infrastructure.
Review URL: https://codereview.chromium.org/10701054
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13105 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-30 17:31:30 +00:00
hpayer@chromium.org
395db15950
Remove eager sweeping for lazy swept spaces. Try to find in SlowAllocateRaw a bounded number of times a big enough memory slot.
...
BUG=v8:2194
Review URL: https://codereview.chromium.org/11420036
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13058 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-26 14:50:20 +00:00
mstarzinger@chromium.org
5dec1423a4
Implement progress bar for large objects.
...
This implements incremental scanning of large objects using a progress
bar in the page header of such objects. Note that this requires forward
white to gray transitions in the write barrier and hence is disabled by
default for now.
R=ulan@chromium.org ,hpayer@chromium.org
Review URL: https://codereview.chromium.org/11362246
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12978 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-15 17:57:40 +00:00
alexeif@chromium.org
b882786349
Add a type conversion to fix Windows build after r12793
...
TBR=mstarzinger@chromium.org
Review URL: https://chromiumcodereview.appspot.com/11227034
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12794 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-10-22 18:25:10 +00:00
mstarzinger@chromium.org
37759f4d64
Implement committed physical memory stats for Linux.
...
The patch introduces CommittedPhysicalMemory function to
the Heap class that reports committed *physical* memory acquired
for the heap from the OS.
It is important because some OSes may defer actual committment on e.g.
first access to the region.
So reporting just plain committed size led to various weird artifacts
like showing V8 allocated memory higher than the whole process
private size.
BUG=v8:2191
Review URL: https://codereview.chromium.org/11066118
Patch from Alexei Filippov <alph@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12793 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-10-22 16:33:10 +00:00
mvstanton@chromium.org
b3c0ed8245
Enable --verify-heap in release mode
...
R=mstarzinger@chromium.org
BUG=v8:2120
Review URL: https://codereview.chromium.org/11118018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12713 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-10-12 11:41:14 +00:00
verwaest@chromium.org
6e1bafc808
Revert "Allow partial scanning of large arrays in order to avoid"
...
This reverts commit r12619.
BUG=
Review URL: https://chromiumcodereview.appspot.com/11029023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12660 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-10-04 11:09:17 +00:00
mstarzinger@chromium.org
5b64362706
Revert r12625 due to sandbox incompatibility.
...
Original message: Implement committed physical memory stats for Linux.
This had to be reverted because it crashes when compiled into Chromium
due to the sandbox not allowing the mincore call.
R=verwaest@chromium.org
BUG=v8:2191
Review URL: https://codereview.chromium.org/11023010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12640 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-10-01 12:11:06 +00:00
mstarzinger@chromium.org
974a2268bb
Implement committed physical memory stats for Linux.
...
The patch introduces CommittedPhysicalMemory function to the Heap class
that reports committed *physical* memory acquired from the OS.
It is important because some OSes may postpone actual commitment on e.g.
first access to the previously committed region.
So reporting just plain committed size led to various weird artifacts
like DevTools showing V8 allocated memory higher than the whole process
private size.
BUG=v8:2191
Review URL: https://codereview.chromium.org/10961042
Patch from Alexei Filippov <alph@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12625 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-09-27 13:27:50 +00:00
erik.corry@gmail.com
aba09dcf2e
Allow partial scanning of large arrays in order to avoid
...
mark stack overflow. This is a reland of r12609 -
https://chromiumcodereview.appspot.com/10959011 - but
this time VisitPointers has been fixed (it used to assume
that the first slot was on the first page of a large object).
Review URL: https://chromiumcodereview.appspot.com/10996018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12619 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-09-26 12:17:24 +00:00
erik.corry@gmail.com
e8ffc2bebd
Make the speed of incremental marking depend also on the rate
...
at which we are hitting expensive write barrier operations,
not just on the rate of allocation.
Review URL: https://chromiumcodereview.appspot.com/10974003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12618 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-09-26 11:35:42 +00:00
erik.corry@gmail.com
5547815daf
Revert 12609 (Allow partial scanning of large arrays)
...
due to crashes in unbox-double-arrays.js test.
Review URL: https://chromiumcodereview.appspot.com/10996017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12610 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-09-26 08:55:19 +00:00
erik.corry@gmail.com
a54e007a95
Allow partial scanning of large arrays in order to avoid
...
mark stack overflow.
Review URL: https://chromiumcodereview.appspot.com/10959011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12609 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-09-26 08:33:15 +00:00
erik.corry@gmail.com
5a8d1764bc
Refactoring of snapshots. This simplifies and improves
...
the speed of deserializing code. The current startup
time improvement for V8 is around 6%, but code deserialization
is speeded up disproportionately, and we will soon have more
code in the snapshot.
* Removed support for deserializing into large object space.
The regular pages are 1Mbyte now and that is plenty. This
is a big simplification.
* Instead of reserving space for the snapshot we actually
allocate it now. This removes some special casing from
the memory management and simplifies deserialization since
we are just bumping a pointer rather than calling the
normal allocation routines during deserialization.
* Record in the snapshot how much we need to boot up and
allocate it instead of just assuming that allocations in
a new VM will always be linear.
* In the snapshot we always address an object as a negative
offset from the current allocation point. We used to
sometimes address from the start of the deserialized data,
but this is less useful now that we have good support for
roots and repetitions in the deserialization data.
* Code objects were previously deserialized (like other
objects) by alternating raw data (deserialized with memcpy)
and pointers (to external references, other objects, etc.).
Now we deserialize code objects with a single memcpy,
followed by a series of skips and pointers that partially
overwrite the code we memcopied out of the snapshot.
The skips are sometimes merged into the following
instruction in the deserialization data to reduce dispatch
time.
* Integers in the snapshot were stored in a variable length
format that gives a compact representation for small positive
integers. This is still the case, but the new encoding can
be decoded without branches or conditional instructions,
which is faster on a modern CPU.
Review URL: https://chromiumcodereview.appspot.com/10918067
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12505 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-09-14 11:16:56 +00:00
verwaest@chromium.org
1fcddc4456
While allocating code objects, perform the incremental marking step before NULLing the new object. Otherwise the code cache cannot iterate the code space anymore, which is required to clear ICs.
...
Review URL: https://chromiumcodereview.appspot.com/10834408
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12345 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-08-20 14:44:26 +00:00
ulan@chromium.org
ae0a7ec93a
Use correct size of promoted space for setting promotion and allocation limits.
...
Review URL: https://chromiumcodereview.appspot.com/10376008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11513 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-04 09:36:46 +00:00
vegorov@chromium.org
49989753ea
Don't ignore return value of CommitCodePage in AllocateAlignedMemory.
...
Release the mapping as whole if commit failed to avoid leaking virtual address space.
R=mstarzinger@chromium.org
BUG=chromium:118625
Review URL: https://chromiumcodereview.appspot.com/10260012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11471 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-30 15:02:43 +00:00
ulan@chromium.org
2b554f2448
Make progress in incremental marking if scavenge is delaying mark-sweep.
...
R=mstarzinger@chromium.org
Review URL: https://chromiumcodereview.appspot.com/9965054
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11213 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-03 07:32:19 +00:00
erik.corry@gmail.com
f00631b710
Reduce initial boot-up memory use. This is an other attempt at what
...
http://codereview.chromium.org/9179012 was trying to achieve. This
time I am going for 80% of the benefit with around 5% of the complexity.
It works by reducing the size of the first page in each space. Unlike the
previous change there is no attempt to grow pages, we just allocate more
full-sized pages when we need more memory. For this reason the first pages are
not quite as small (compare
http://codereview.chromium.org/9179012/diff/1/src/snapshot.h with the changes
in spaces.cc in this cl): We want to be able to do a little bit of allocation
before we have to add a full-sized page to the space.
Review URL: https://chromiumcodereview.appspot.com/9950048
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11203 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-02 08:32:31 +00:00
vegorov@chromium.org
de9120500a
Add Zhongping Wang <kewpie.w.zp@gmail.com> to AUTHORS
...
Fix compilation failure on Win x64 builder introduced by r11084
R=jkummerow@chromium.org
Review URL: https://chromiumcodereview.appspot.com/9748004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11090 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-20 08:12:31 +00:00
vegorov@chromium.org
b7b2fd4cec
Implement a hash based look-up to speed up containing address check in large
...
object space. Before, it was a link-list based look-up, and make this function
a little bit 'hot' from profile point.
BUG=v8:853
TEST=
Review URL: https://chromiumcodereview.appspot.com/9634005
Patch from Zhongping Wang <kewpie.w.zp@gmail.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11084 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-19 12:08:20 +00:00
erik.corry@gmail.com
e3774cf23f
Record the addresses of pages that are unmapped to aid
...
in post mortem crash dump analysis.
Review URL: https://chromiumcodereview.appspot.com/9700061
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11071 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-16 14:13:22 +00:00
ulan@chromium.org
7e8c7fa368
Ignore soft heap limit when reserving space.
...
R=mstarzinger@chromium.org
Review URL: https://chromiumcodereview.appspot.com/9605014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10958 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-07 16:24:11 +00:00
mstarzinger@chromium.org
70804bacf5
Fix compilation issue on Win64.
...
R=yangguo@chromium.org
Review URL: https://chromiumcodereview.appspot.com/9465003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10818 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-24 09:45:27 +00:00
vegorov@chromium.org
fbc230e42b
Ensure that executable pages are properly guarded.
...
Split executable memory chunks into two pieces: header with all metadata (protection: RW) and body (protection: RWX). Separate header from metadata with a guard page and add a guard page after the page body.
R=erik.corry@gmail.com
BUG=http://crbug.com/115151
Review URL: https://chromiumcodereview.appspot.com/9452002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10809 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-23 12:11:24 +00:00
erik.corry@gmail.com
3cfac4da0a
Revert memory saving change due to failures on multithreaded tests
...
on Windows.
Review URL: https://chromiumcodereview.appspot.com/9104039
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10569 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-31 13:33:44 +00:00
erik.corry@gmail.com
8bd56abed0
More compile breakage.
...
Review URL: https://chromiumcodereview.appspot.com/9303030
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10565 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-31 12:15:21 +00:00
erik.corry@gmail.com
664669cf17
Fix compile error on Mac.
...
Review URL: https://chromiumcodereview.appspot.com/9293032
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10563 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-31 12:06:00 +00:00
erik.corry@gmail.com
f5feac9e98
Reduce memory use immediately after boot.
...
This is a recommit of https://chromiumcodereview.appspot.com/9289047
with changes noted in comments in the codereview tool.
Review URL: https://chromiumcodereview.appspot.com/9233050
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10562 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-31 11:22:35 +00:00
erik.corry@gmail.com
a9428d2bcc
Revert 10542 (boot time memory reduction) due to map alignment
...
issues on 64 bit.
Review URL: https://chromiumcodereview.appspot.com/9295047
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10544 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-30 10:20:13 +00:00
erik.corry@gmail.com
419ea5fcc3
Reduce boot-up memory use of V8.
...
This is a recommit of http://codereview.chromium.org/9179012
after fixing what turned out to be unrelated out-of-memory
errors.
That was a rebase of http://codereview.chromium.org/9017009/
Review URL: https://chromiumcodereview.appspot.com/9289047
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10542 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-30 09:15:34 +00:00