platform/upstream/v8.git
11 years agoAdded a simple dead code removal phase.
svenpanne@chromium.org [Thu, 11 Oct 2012 10:52:58 +0000 (10:52 +0000)]
Added a simple dead code removal phase.

We iteratively remove all dead Hydrogen instruction until we reach a fixed point. We consider an instruction dead if it is unused, has no observable side effects and is deletable. The last part of the condition is currently not very nice: We basically have to whitelist "safe" instructions, because we are missing more detailed dependencies and/or more detailed tracking of side effects.

We disable dead code elimination for now in our test runners, because we have tons of poorly written tests which wouldn't test anymore what they are supposed to test with this phase enabled. To get test coverage for dead code elimination itself, we should enable it on a few build bots. This is not really a perfect state, but the best we can do for now.

This patch includes a few const-correctness fixes, most of them were necessary for this CL.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12697 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoPrepare push to trunk. Now working on version 3.14.3.
verwaest@chromium.org [Wed, 10 Oct 2012 17:05:00 +0000 (17:05 +0000)]
Prepare push to trunk.  Now working on version 3.14.3.

R=ulan@chromium.org

Review URL: https://chromiumcodereview.appspot.com/11098047

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12692 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoARM: allow VFP3 instructions when hardfloat is enabled.
ulan@chromium.org [Wed, 10 Oct 2012 16:15:29 +0000 (16:15 +0000)]
ARM: allow VFP3 instructions when hardfloat is enabled.

R=danno@chromium.org
BUG=152506

Review URL: https://chromiumcodereview.appspot.com/11028116

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12691 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoAlso use binary search to search through valid entries.
verwaest@chromium.org [Wed, 10 Oct 2012 14:48:07 +0000 (14:48 +0000)]
Also use binary search to search through valid entries.

Review URL: https://chromiumcodereview.appspot.com/11028056

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12690 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoTransition ownership back if the descriptors were shared via elements transitions.
verwaest@chromium.org [Wed, 10 Oct 2012 13:13:35 +0000 (13:13 +0000)]
Transition ownership back if the descriptors were shared via elements transitions.

BUG=

Review URL: https://chromiumcodereview.appspot.com/11091044

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12689 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoFix transition conversion from CONSTANT_FUNCTION to FIELD.
verwaest@chromium.org [Wed, 10 Oct 2012 12:31:50 +0000 (12:31 +0000)]
Fix transition conversion from CONSTANT_FUNCTION to FIELD.

Review URL: https://chromiumcodereview.appspot.com/11094044

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12688 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoFix CNLT regression.
verwaest@chromium.org [Wed, 10 Oct 2012 12:29:44 +0000 (12:29 +0000)]
Fix CNLT regression.

This happens when a map A with no descriptors in fast_holey_elements
mode first gets some properties, making it share descriptor arrays with
a map B to which it transitions. Then map A transitions elements kind to
dictionary_elements in map C. C stores the empty_descriptor_array in its
own transition array. When adding a property to C, C transitions to D
and shares the descriptors. If D dies, a CNLT clears the transition
array of C, making the descriptor array of A (and thus also of B) shine
through. If a property is now added to an object in state C, it'll inherit
all the properties of A (and B). If those properties had high field indices,
we do not have a large enough backing store for the single newly added
property, and we'll write out of bounds.

BUG=chromium:151749

Review URL: https://chromiumcodereview.appspot.com/11017054

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12687 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoFix compilation failure on ARM in r12685.
mstarzinger@chromium.org [Wed, 10 Oct 2012 11:58:22 +0000 (11:58 +0000)]
Fix compilation failure on ARM in r12685.

R=jkummerow@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12686 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoEnable compilation of GDBJIT interface on Linux.
mstarzinger@chromium.org [Wed, 10 Oct 2012 11:13:15 +0000 (11:13 +0000)]
Enable compilation of GDBJIT interface on Linux.

R=jkummerow@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12685 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoImprove page flag checking sequence on ARM.
mstarzinger@chromium.org [Tue, 9 Oct 2012 15:12:39 +0000 (15:12 +0000)]
Improve page flag checking sequence on ARM.

R=ulan@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12682 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoMake sure that the context argument of HAdd is never NULL.
svenpanne@chromium.org [Tue, 9 Oct 2012 13:53:24 +0000 (13:53 +0000)]
Make sure that the context argument of HAdd is never NULL.

Although this doesn't hurt currently, it hurts any future compiler
pass relying on the invariant that no operand is NULL.

R=jkummerow@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12681 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoClarify that date parsing follows Safari.
rossberg@chromium.org [Tue, 9 Oct 2012 08:34:39 +0000 (08:34 +0000)]
Clarify that date parsing follows Safari.

R=ulan@chromium.org
BUG=145198

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12680 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoMake GDBJIT interface compile again.
mstarzinger@chromium.org [Tue, 9 Oct 2012 08:24:58 +0000 (08:24 +0000)]
Make GDBJIT interface compile again.

R=ulan@chromium.org
BUG=v8:1804

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12679 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoAdd PRESUBMIT script to V8
danno@chromium.org [Mon, 8 Oct 2012 13:49:57 +0000 (13:49 +0000)]
Add PRESUBMIT script to V8

Currently, it executes the OWNERS check and tools/presubmit.py, as well as a
check for a non-empty commit message

BUG=none
TEST=run git cl presubmit

Review URL: https://codereview.chromium.org/11092002
Patch from Jochen Eisinger <jochen@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12678 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoFixed Accessors::FunctionGetPrototype's proto chain traversal.
svenpanne@chromium.org [Mon, 8 Oct 2012 12:58:46 +0000 (12:58 +0000)]
Fixed Accessors::FunctionGetPrototype's proto chain traversal.

Actually it didn't traverse that far... ;-) Did some cleanup on the way.

R=rossberg@chromium.org
BUG=chrome:143967
TEST=regress/regress-143967.js

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12677 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoARM: Fast path for integer inputs to EmitVFPTruncate
danno@chromium.org [Mon, 8 Oct 2012 12:50:15 +0000 (12:50 +0000)]
ARM: Fast path for integer inputs to EmitVFPTruncate

BUG=none
TEST=none

Review URL: https://codereview.chromium.org/11049025
Patch from Martyn Capewell <m.m.capewell@googlemail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12676 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoAdd OWNERS file
danno@chromium.org [Mon, 8 Oct 2012 11:58:08 +0000 (11:58 +0000)]
Add OWNERS file

R=jkummerow@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12674 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoUse dot_for_symbol.
rossberg@chromium.org [Mon, 8 Oct 2012 11:39:08 +0000 (11:39 +0000)]
Use dot_for_symbol.

R=svenpanne@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12672 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoChange default ARCH version in android low-level profiler script to 4.6
ulan@chromium.org [Mon, 8 Oct 2012 11:11:30 +0000 (11:11 +0000)]
Change default ARCH version in android low-level profiler script to 4.6

R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/11086002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12671 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoMake sure that names of temporaries do not clash with real variables.
rossberg@chromium.org [Fri, 5 Oct 2012 12:47:34 +0000 (12:47 +0000)]
Make sure that names of temporaries do not clash with real variables.

R=mstarzinger@chromium.org
BUG=v8:2322

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12668 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoReject local module declarations.
rossberg@chromium.org [Fri, 5 Oct 2012 09:14:08 +0000 (09:14 +0000)]
Reject local module declarations.

R=mstarzinger@chromium.org
BUG=150628

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12665 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoReject uses of lexical for-loop variable on the RHS.
rossberg@chromium.org [Fri, 5 Oct 2012 09:07:53 +0000 (09:07 +0000)]
Reject uses of lexical for-loop variable on the RHS.

R=mstarzinger@chromium.org
BUG=v8:2322

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12664 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agopush-to-trunk.sh/merge-to-branch.sh: use "git apply" instead of "patch" to apply...
jkummerow@chromium.org [Fri, 5 Oct 2012 08:58:02 +0000 (08:58 +0000)]
push-to-trunk.sh/merge-to-branch.sh: use "git apply" instead of "patch" to apply patches

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12663 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoRevert "Allow partial scanning of large arrays in order to avoid"
verwaest@chromium.org [Thu, 4 Oct 2012 11:09:17 +0000 (11:09 +0000)]
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

11 years agoMIPS: Changed "marked" nops to use sll(zero_reg, at, type).
danno@chromium.org [Thu, 4 Oct 2012 09:46:50 +0000 (09:46 +0000)]
MIPS: Changed "marked" nops to use sll(zero_reg, at, type).

We use marking bits in nops (in the 'sa' field) for debug markers, and for some IC stuff. A normal NOP in mips is sll(zero_reg, zero_reg, 0), where the 0 is a 5 bit immediate field in 'sa'.

See enum NopMarkerTypes at around line 654 of assembler-mips.h

The problem is that these markers use encodings that are reserved for the 'ssnop' and 'ehb' instructions. These are instructions used for hazard barriers.

It does not break anything, but it will slow things down a little bit as some pipeline stages are cleared, etc.

This commit changes the "marked" NOPs to sll(zero_reg, at, type) instructions, which is also a NOP operation on MIPS.

BUG=
TEST=

Review URL: https://codereview.chromium.org/10990110
Patch from Akos Palfi <palfia@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12657 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoMake sure all labels are bound and linked in ARM DoModI.
ulan@chromium.org [Tue, 2 Oct 2012 16:48:45 +0000 (16:48 +0000)]
Make sure all labels are bound and linked in ARM DoModI.

BUG=v8:2354

TBR=danno@chromium.org,subratokde@codeaurora.org

Review URL: https://chromiumcodereview.appspot.com/11038017

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12656 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoFix slot recording of code target patches.
mstarzinger@chromium.org [Tue, 2 Oct 2012 15:46:55 +0000 (15:46 +0000)]
Fix slot recording of code target patches.

This makes sure that we only record relocation slots for code target
patches that happen in marked objects. Unmarked ones might be visited
again, whereas marked ones are alive and will not be visited again.

R=ulan@chromium.org
BUG=chromium:152615,chromium:144230

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12655 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoChange the Android makefile to use GCC 4.6 instead of GCC 4.4.3.
ulan@chromium.org [Tue, 2 Oct 2012 13:20:27 +0000 (13:20 +0000)]
Change the Android makefile to use GCC 4.6 instead of GCC 4.4.3.

Android NDK 8b includes GCC 4.6

R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/11032018

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12654 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoRevert "Adding a high-resolution timer to platform win32."
jkummerow@chromium.org [Tue, 2 Oct 2012 11:07:26 +0000 (11:07 +0000)]
Revert "Adding a high-resolution timer to platform win32."

This reverts r12651.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12652 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoAdding a high-resolution timer to platform win32.
jkummerow@chromium.org [Tue, 2 Oct 2012 10:59:44 +0000 (10:59 +0000)]
Adding a high-resolution timer to platform win32.

BUG=None

Review URL: https://codereview.chromium.org/10867057
Patch from Sergey Rogulenko <rogulenko@google.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12651 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoReplacing circular queue by single buffer in CPU Profiler.
jkummerow@chromium.org [Tue, 2 Oct 2012 10:51:00 +0000 (10:51 +0000)]
Replacing circular queue by single buffer in CPU Profiler.

BUG=None

Review URL: https://codereview.chromium.org/10871039
Patch from Sergey Rogulenko <rogulenko@google.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12650 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoMoving cpu profiling into its own thread.
jkummerow@chromium.org [Tue, 2 Oct 2012 09:58:11 +0000 (09:58 +0000)]
Moving cpu profiling into its own thread.

BUG=None

Review URL: https://codereview.chromium.org/10857035
Patch from Sergey Rogulenko <rogulenko@google.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12649 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoTest runner: More fixes.
jkummerow@chromium.org [Tue, 2 Oct 2012 08:50:02 +0000 (08:50 +0000)]
Test runner: More fixes.

- handle Ctrl+C better
- actually show error messages sent by network peers
- gracefully handle missing test cases
- pull test.py and utils.py during server setup (temporary fix for testcfg import issue)

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12648 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoMIPS: Fix mistake in r12549 (1597d7d9).
verwaest@chromium.org [Tue, 2 Oct 2012 07:54:41 +0000 (07:54 +0000)]
MIPS: Fix mistake in r12549 (1597d7d9).

This commit fixes several test failures introduced by r12549 (1597d7d9):
- mjsunit/regress/regress-760-1
- mjsunit/strict-mode
- mjsunit/string-add

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/11039014
Patch from Akos Palfi <palfia@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12647 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoSupport for SDIV and MLS ARM instructions, and implement DoModI using them.
danno@chromium.org [Mon, 1 Oct 2012 21:27:33 +0000 (21:27 +0000)]
Support for SDIV and MLS ARM instructions, and implement DoModI using them.
Also added support for the runtime detection to check if hardware supports SDIV/UDIV
Other new opportunities to exploit SDIV/UDIV will be done in separate issues.

Review URL: https://chromiumcodereview.appspot.com/10977051
Patch from Subrato K De <subratokde@codeaurora.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12646 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoTest runner: fix empty patches; better error message for missing test files; correct...
jkummerow@chromium.org [Mon, 1 Oct 2012 17:16:00 +0000 (17:16 +0000)]
Test runner: fix empty patches; better error message for missing test files; correct .gitignore entry for message.status2

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12645 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoAllow optimistically hoisting elements transitions over accesses.
verwaest@chromium.org [Mon, 1 Oct 2012 16:22:43 +0000 (16:22 +0000)]
Allow optimistically hoisting elements transitions over accesses.

Review URL: https://chromiumcodereview.appspot.com/10972011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12642 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoPrepare push to trunk. Now working on version 3.14.2.
jkummerow@chromium.org [Mon, 1 Oct 2012 16:19:43 +0000 (16:19 +0000)]
Prepare push to trunk.  Now working on version 3.14.2.

R=mstarzinger@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12641 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoRevert r12625 due to sandbox incompatibility.
mstarzinger@chromium.org [Mon, 1 Oct 2012 12:11:06 +0000 (12:11 +0000)]
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

11 years agoOff-by-one error in zapping objects after right trimming.
verwaest@chromium.org [Mon, 1 Oct 2012 09:48:07 +0000 (09:48 +0000)]
Off-by-one error in zapping objects after right trimming.

Review URL: https://chromiumcodereview.appspot.com/11013012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12637 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoFix cctests using Sockets to be able to run in parallel
jkummerow@chromium.org [Mon, 1 Oct 2012 09:41:18 +0000 (09:41 +0000)]
Fix cctests using Sockets to be able to run in parallel

BUG=v8:945

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12636 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoTest runner: Send SVN revision instead of git commit hash in work packet
jkummerow@chromium.org [Mon, 1 Oct 2012 09:05:27 +0000 (09:05 +0000)]
Test runner: Send SVN revision instead of git commit hash in work packet

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12635 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoTest runner: remove noisy debug output.
mstarzinger@chromium.org [Fri, 28 Sep 2012 15:53:46 +0000 (15:53 +0000)]
Test runner: remove noisy debug output.

R=jkummerow@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12634 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoTest runner: fix outdated "import discovery"
jkummerow@chromium.org [Fri, 28 Sep 2012 15:11:33 +0000 (15:11 +0000)]
Test runner: fix outdated "import discovery"

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12633 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agotest runner: fix wildcard handling in test status files
jkummerow@chromium.org [Fri, 28 Sep 2012 14:59:00 +0000 (14:59 +0000)]
test runner: fix wildcard handling in test status files

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12632 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agotest runner: fix "test-server.py setup"
jkummerow@chromium.org [Fri, 28 Sep 2012 14:56:58 +0000 (14:56 +0000)]
test runner: fix "test-server.py setup"

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12631 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoNot set -m32 flag when compiling with Android ARM compiler.
jkummerow@chromium.org [Fri, 28 Sep 2012 14:38:59 +0000 (14:38 +0000)]
Not set -m32 flag when compiling with Android ARM compiler.

We are removing CXX_target environment variables and only use the
make_global_settings to select compiler in chromium Android.

BUG=143889

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12630 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoRestore the descriptor array before returning allocation failure.
verwaest@chromium.org [Fri, 28 Sep 2012 10:15:58 +0000 (10:15 +0000)]
Restore the descriptor array before returning allocation failure.

BUG=chromium:151750

Review URL: https://chromiumcodereview.appspot.com/10989076

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12629 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoOnly use OwnDescriptors to decide whether to go slow or not.
verwaest@chromium.org [Thu, 27 Sep 2012 13:55:50 +0000 (13:55 +0000)]
Only use OwnDescriptors to decide whether to go slow or not.

Review URL: https://chromiumcodereview.appspot.com/10996044

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12626 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoImplement committed physical memory stats for Linux.
mstarzinger@chromium.org [Thu, 27 Sep 2012 13:27:50 +0000 (13:27 +0000)]
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

11 years agoAdd the VFP-ness to the minor number of the keyed store elements
erik.corry@gmail.com [Thu, 27 Sep 2012 11:31:26 +0000 (11:31 +0000)]
Add the VFP-ness to the minor number of the keyed store elements
IC so that the version from the snapshot is not used if we have
a more capable CPU at runtime.
Review URL: https://chromiumcodereview.appspot.com/10984065

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12624 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoFix ARM bug introduced in r12604 that caused crashes on ARM
erik.corry@gmail.com [Thu, 27 Sep 2012 07:45:49 +0000 (07:45 +0000)]
Fix ARM bug introduced in r12604 that caused crashes on ARM
on crypto-md5 from SunSpider.  Bug=152402
Review URL: https://chromiumcodereview.appspot.com/10991045

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12623 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoFix probing in JSON.parse.
yangguo@chromium.org [Wed, 26 Sep 2012 14:59:10 +0000 (14:59 +0000)]
Fix probing in JSON.parse.

R=verwaest@chromium.org
BUG=

Review URL: https://chromiumcodereview.appspot.com/10989032

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12622 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoFix Clang warning about tautological compare.
ulan@chromium.org [Wed, 26 Sep 2012 14:42:08 +0000 (14:42 +0000)]
Fix Clang warning about tautological compare.

BUG=151927

R=hans@chromium.org

Patch from Hans Wennborg <hans@chromium.org>.

Review URL: https://chromiumcodereview.appspot.com/10985043

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12621 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoExtend grokdump.py with simple BreakPad symbol files support.
vegorov@chromium.org [Wed, 26 Sep 2012 12:51:46 +0000 (12:51 +0000)]
Extend grokdump.py with simple BreakPad symbol files support.

R=mstarzinger@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12620 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoAllow partial scanning of large arrays in order to avoid
erik.corry@gmail.com [Wed, 26 Sep 2012 12:17:24 +0000 (12:17 +0000)]
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

11 years agoMake the speed of incremental marking depend also on the rate
erik.corry@gmail.com [Wed, 26 Sep 2012 11:35:42 +0000 (11:35 +0000)]
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

11 years agoFix silently failing branch merge script on Mac
danno@chromium.org [Wed, 26 Sep 2012 11:19:35 +0000 (11:19 +0000)]
Fix silently failing branch merge script on Mac

R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/10981034

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12615 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoAvoid wrong imul deopt on ia32 and x64 (fixes v8 bug 2339).
mmassi@chromium.org [Wed, 26 Sep 2012 09:57:30 +0000 (09:57 +0000)]
Avoid wrong imul deopt on ia32 and x64 (fixes v8 bug 2339).

BUG=v8:2339

Review URL: https://chromiumcodereview.appspot.com/10963032

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12614 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoLowered kMaxVirtualRegisters (fixes v8 2139 and chrome 123822 and 128252).
mmassi@chromium.org [Wed, 26 Sep 2012 09:35:41 +0000 (09:35 +0000)]
Lowered kMaxVirtualRegisters (fixes v8 2139 and chrome 123822 and 128252).

BUG=128252

Review URL: https://chromiumcodereview.appspot.com/10966031

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12613 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoPull more recent gyp.
jkummerow@chromium.org [Wed, 26 Sep 2012 09:12:45 +0000 (09:12 +0000)]
Pull more recent gyp.

This pulls in https://chromiumcodereview.appspot.com/10079030/
and https://chromiumcodereview.appspot.com/10876082/ among others,
which are needed for more *nix platforms support.

Review URL: https://codereview.chromium.org/10983022
Patch from PaweÅ‚ Hajdan Jr. <phajdan.jr@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12612 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoMake Kraken fasta.
erik.corry@gmail.com [Wed, 26 Sep 2012 09:01:13 +0000 (09:01 +0000)]
Make Kraken fasta.
Review URL: https://chromiumcodereview.appspot.com/10978040

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12611 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoRevert 12609 (Allow partial scanning of large arrays)
erik.corry@gmail.com [Wed, 26 Sep 2012 08:55:19 +0000 (08:55 +0000)]
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

11 years agoAllow partial scanning of large arrays in order to avoid
erik.corry@gmail.com [Wed, 26 Sep 2012 08:33:15 +0000 (08:33 +0000)]
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

11 years agoFix off-by-one error introduced in r12598.
yangguo@chromium.org [Tue, 25 Sep 2012 16:59:27 +0000 (16:59 +0000)]
Fix off-by-one error introduced in r12598.

R=verwaest@chromium.org
BUG=

Review URL: https://chromiumcodereview.appspot.com/10977009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12606 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoARM: Small optimisation of VFP immediate creation
danno@chromium.org [Tue, 25 Sep 2012 14:32:07 +0000 (14:32 +0000)]
ARM: Small optimisation of VFP immediate creation

Save an instruction in VFP immediate creation by passing a scratch register.

BUG=none
TEST=none

Review URL: https://chromiumcodereview.appspot.com/10990024
Patch from Martyn Capewell <m.m.capewell@googlemail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12605 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agox64 and ARM: Fix issue 2346 (order of operations in keyed store
erik.corry@gmail.com [Tue, 25 Sep 2012 13:35:42 +0000 (13:35 +0000)]
x64 and ARM: Fix issue 2346 (order of operations in keyed store
on arrays) and turn get-own-property-descriptor.js test into
a regression test.
Review URL: https://chromiumcodereview.appspot.com/10985017

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12604 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoFix 2346: Generic KeyedStoreIC doesn't change length and element_kind atomically
danno@chromium.org [Tue, 25 Sep 2012 09:55:44 +0000 (09:55 +0000)]
Fix 2346: Generic KeyedStoreIC doesn't change length and element_kind atomically

R=erik.corry@gmail.com
BUG=v8:2346

Review URL: https://chromiumcodereview.appspot.com/10991012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12603 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoBump number of allowed variables per scope to 65535, to address GWT.
rossberg@chromium.org [Mon, 24 Sep 2012 16:22:17 +0000 (16:22 +0000)]
Bump number of allowed variables per scope to 65535, to address GWT.

R=jkummerow@chromium.org
BUG=151625

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12600 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoFix failures caused by r12598.
yangguo@chromium.org [Mon, 24 Sep 2012 15:03:09 +0000 (15:03 +0000)]
Fix failures caused by r12598.

R=verwaest@chromium.org
BUG=

Review URL: https://chromiumcodereview.appspot.com/10958070

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12599 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoFast path for symbol lookup in JSON.parse.
yangguo@chromium.org [Mon, 24 Sep 2012 14:23:46 +0000 (14:23 +0000)]
Fast path for symbol lookup in JSON.parse.

R=verwaest@chromium.org
BUG=

Review URL: https://chromiumcodereview.appspot.com/10969069

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12598 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoImprove --trace-gc-verbose to show sum of all spaces.
mstarzinger@chromium.org [Mon, 24 Sep 2012 13:03:11 +0000 (13:03 +0000)]
Improve --trace-gc-verbose to show sum of all spaces.

R=ulan@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12597 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoSplit test/mjsunit/debug-stepout-scope into smaller chunks
jkummerow@chromium.org [Mon, 24 Sep 2012 11:18:29 +0000 (11:18 +0000)]
Split test/mjsunit/debug-stepout-scope into smaller chunks

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12596 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoDelete test/mjsunit/regress-1969.
jkummerow@chromium.org [Mon, 24 Sep 2012 10:48:14 +0000 (10:48 +0000)]
Delete test/mjsunit/regress-1969.

It was flaky, and its usefulness was doubtful.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12595 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoRemove trailing whitespace
jkummerow@chromium.org [Mon, 24 Sep 2012 10:44:04 +0000 (10:44 +0000)]
Remove trailing whitespace

R=mstarzinger@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12594 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoSpeed up test/mjsunit/compiler/regress-or
jkummerow@chromium.org [Mon, 24 Sep 2012 10:08:01 +0000 (10:08 +0000)]
Speed up test/mjsunit/compiler/regress-or

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12593 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoSpeed up test/mjsunit/compiler/regress-gvn
jkummerow@chromium.org [Mon, 24 Sep 2012 10:07:09 +0000 (10:07 +0000)]
Speed up test/mjsunit/compiler/regress-gvn

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12592 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoSplit test/mjsunit/numops-fuzz into smaller chunks
jkummerow@chromium.org [Mon, 24 Sep 2012 10:06:06 +0000 (10:06 +0000)]
Split test/mjsunit/numops-fuzz into smaller chunks

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12591 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoSplit test/mjsunit/mul-exhaustive into smaller chunks
jkummerow@chromium.org [Mon, 24 Sep 2012 10:04:58 +0000 (10:04 +0000)]
Split test/mjsunit/mul-exhaustive into smaller chunks

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12590 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoSplit test/mjsunit/fuzz-natives into smaller chunks
jkummerow@chromium.org [Mon, 24 Sep 2012 10:03:49 +0000 (10:03 +0000)]
Split test/mjsunit/fuzz-natives into smaller chunks

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12589 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoSplit test/mjsunit/math-floor into smaller chunks
jkummerow@chromium.org [Mon, 24 Sep 2012 10:02:44 +0000 (10:02 +0000)]
Split test/mjsunit/math-floor into smaller chunks

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12588 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoSpeed up test/mjsunit/greedy.js
jkummerow@chromium.org [Mon, 24 Sep 2012 10:01:35 +0000 (10:01 +0000)]
Speed up test/mjsunit/greedy.js

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12587 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoSpeed up test/mjsunit/debug-multiple-breakpoints
jkummerow@chromium.org [Mon, 24 Sep 2012 10:00:25 +0000 (10:00 +0000)]
Speed up test/mjsunit/debug-multiple-breakpoints

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12586 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoSpeed up test/mjsunit/d8-os by reducing sleep times
jkummerow@chromium.org [Mon, 24 Sep 2012 09:57:16 +0000 (09:57 +0000)]
Speed up test/mjsunit/d8-os by reducing sleep times

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12585 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoSpeed up test/mjsunit/regress/regress-crbug-119926
jkummerow@chromium.org [Mon, 24 Sep 2012 09:56:11 +0000 (09:56 +0000)]
Speed up test/mjsunit/regress/regress-crbug-119926

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12584 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoFirst commit of new tools/run-tests.py
jkummerow@chromium.org [Mon, 24 Sep 2012 09:38:46 +0000 (09:38 +0000)]
First commit of new tools/run-tests.py

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12583 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoThis issue is for landing patch by vsevik: http://codereview.chromium.org/10966011/
yurys@chromium.org [Fri, 21 Sep 2012 08:09:34 +0000 (08:09 +0000)]
This issue is for landing patch by vsevik: codereview.chromium.org/10966011/

SourceURL comments for scripts having a name.

sourceURL comment is now preferred script name for all scripts except
for those with non zero start position (e.g. inline scripts in HTML).

BUG=v8:2342
Review URL: https://codereview.chromium.org/10959038

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12576 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoFix CNLT for enum indices.
verwaest@chromium.org [Thu, 20 Sep 2012 15:18:00 +0000 (15:18 +0000)]
Fix CNLT for enum indices.

Review URL: https://chromiumcodereview.appspot.com/10958015

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12569 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoDeopt on storing undefined into double elements.
verwaest@chromium.org [Thu, 20 Sep 2012 13:41:00 +0000 (13:41 +0000)]
Deopt on storing undefined into double elements.

Review URL: https://chromiumcodereview.appspot.com/10963010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12568 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoPrepare push to trunk. Now working on version 3.14.1.
ulan@chromium.org [Thu, 20 Sep 2012 12:09:06 +0000 (12:09 +0000)]
Prepare push to trunk.  Now working on version 3.14.1.

R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/10958014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12565 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoRevert r12530 "Tentatively reenable previous failing test."
ulan@chromium.org [Thu, 20 Sep 2012 11:28:33 +0000 (11:28 +0000)]
Revert r12530 "Tentatively reenable previous failing test."

BUG=v8:2341
R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/10964015

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12564 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoFix missing slot recodring during clearing of CallICs.
mstarzinger@chromium.org [Thu, 20 Sep 2012 10:45:38 +0000 (10:45 +0000)]
Fix missing slot recodring during clearing of CallICs.

This fixes a rare corner case that was caused by missing recording of
relocation slots when the uninitialized CallIC stub happenes to land on
an evacuation candidate and the IC is cleared via the shared function.

R=ulan@chromium.org
BUG=chromium:144230
TEST=cctest/test-heap/Regression144230

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12563 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoFix LBoundsCheck on x64 to handle (stack slot + constant) correctly
jkummerow@chromium.org [Thu, 20 Sep 2012 09:56:24 +0000 (09:56 +0000)]
Fix LBoundsCheck on x64 to handle (stack slot + constant) correctly

BUG=150729

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12562 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoMove regress-2286.js where it belongs
jkummerow@chromium.org [Thu, 20 Sep 2012 09:55:19 +0000 (09:55 +0000)]
Move regress-2286.js where it belongs

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12561 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoWait for resolving conflicts in merge-to-branch script.
ulan@chromium.org [Thu, 20 Sep 2012 08:02:17 +0000 (08:02 +0000)]
Wait for resolving conflicts in merge-to-branch script.

R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/10939033

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12560 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoMIPS: Sharing of descriptor arrays.
verwaest@chromium.org [Wed, 19 Sep 2012 14:29:27 +0000 (14:29 +0000)]
MIPS: Sharing of descriptor arrays.

Port r12492 (479be376)

Original commit message:
This CL adds multiple things:
Transition arrays do not directly point at their descriptor array anymore, but rather do so via an indirect pointer (a JSGlobalPropertyCell).

An ownership bit is added to maps indicating whether it owns its own descriptor array or not.

Maps owning a descriptor array can pass on ownership if a transition from that map is generated; but only if the descriptor array stays exactly the same; or if a descriptor is added.

Maps that don't have ownership get ownership back if their direct child to which ownership was passed is cleared in ClearNonLiveTransitions.

To detect which descriptors in an array are valid, each map knows its own NumberOfOwnDescriptors. Since the descriptors are sorted in order of addition, if we search and find a descriptor with index bigger than this number, it is not valid for the given map.

We currently still build up an enumeration cache (although this may disappear). The enumeration cache is always built for the entire descriptor array, even if not all descriptors are owned by the map. Once a descriptor array has an enumeration cache for a given map; this invariant will always be true, even if the descriptor array was extended. The extended array will inherit the enumeration cache from the smaller descriptor array. If a map with more descriptors needs an enumeration cache, it's EnumLength will still be set to invalid, so it will have to recompute the enumeration cache. This new cache will also be valid for smaller maps since they have their own enumlength; and use this to loop over the cache. If the EnumLength is still invalid, but there is already a cache present that is big enough; we just initialize the EnumLength field for the map.

When we apply ClearNonLiveTransitions and descriptor ownership is passed back to a parent map, the descriptor array is trimmed in-place and resorted. At the same time, the enumeration cache is trimmed in-place.

Only transition arrays contain descriptor arrays. If we transition to a map and pass ownership of the descriptor array along, the child map will not store the descriptor array it owns. Rather its parent will keep the pointer. So for every leaf-map, we find the descriptor array by following the back pointer, reading out the transition array, and fetching the descriptor array from the JSGlobalPropertyCell. If a map has a transition array, we fetch it from there. If a map has undefined as its back-pointer and has no transition array; it is considered to have an empty descriptor array.

When we modify properties, we cannot share the descriptor array. To accommodate this, the child map will get its own transition array; even if there are not necessarily any transitions leaving from the child map. This is necessary since it's the only way to store its own descriptor array.

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/10918287
Patch from Akos Palfi <palfia@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12549 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoFixed minus zero test (fixes v8:2133).
mmassi@chromium.org [Wed, 19 Sep 2012 12:48:49 +0000 (12:48 +0000)]
Fixed minus zero test (fixes v8:2133).

BUG=v8:2133

Review URL: https://chromiumcodereview.appspot.com/10937013

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12548 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoFix setting array length to zero for slow elements.
mstarzinger@chromium.org [Wed, 19 Sep 2012 11:52:33 +0000 (11:52 +0000)]
Fix setting array length to zero for slow elements.

R=verwaest@chromium.org
BUG=chromium:146910
TEST=mjsunit/regress/regress-crbug-146910

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12547 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoRemove whitespace
verwaest@chromium.org [Wed, 19 Sep 2012 11:09:07 +0000 (11:09 +0000)]
Remove whitespace

Review URL: https://chromiumcodereview.appspot.com/10949018

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12546 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

11 years agoUse NumberOfOwnDescriptors/EnumLength for counting properties on fast objects.
verwaest@chromium.org [Wed, 19 Sep 2012 10:06:02 +0000 (10:06 +0000)]
Use NumberOfOwnDescriptors/EnumLength for counting properties on fast objects.

Also split CNLT into small functions.

Review URL: https://chromiumcodereview.appspot.com/10950023

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12545 ce2b1a6d-e550-0410-aec6-3dcde31c8c00