platform/upstream/v8.git
12 years agoMIPS: Improve performance of keyed loads/stores which have a HeapNumber index.
fschneider@chromium.org [Fri, 13 Apr 2012 13:04:51 +0000 (13:04 +0000)]
MIPS: Improve performance of keyed loads/stores which have a HeapNumber index.

Port r11282 (bd2ab07).

Patch by Daniel Kalmar.

Original commit message:

Some GWT compiled code results in array access that has a heap number (e.g. -0)
as an index. Until now this would result in a generic IC.

For example:

a[-0] === a[0] or

a[0.25 * 4] === a[1]

This change detects heap numbers that are representable as a smi
and converts them. As a result we can still use the fast keyed monomorphic
ICs. Optimized code already handles keyed access with a double-key efficiently.

As a result the frame rate on the reported benchmark improves by roughly 2x.

BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10068012

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

12 years agoSplit nodes and edges into separate arrays in heap snapshot serialization.
alexeif@chromium.org [Fri, 13 Apr 2012 12:50:48 +0000 (12:50 +0000)]
Split nodes and edges into separate arrays in heap snapshot serialization.

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

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

12 years agoMIPS: Implement CheckNotCharacterAfterMinusAnd. This is a commit of http://coderevie...
erik.corry@gmail.com [Fri, 13 Apr 2012 11:47:31 +0000 (11:47 +0000)]
MIPS: Implement CheckNotCharacterAfterMinusAnd.  This is a commit of codereview.chromium.org/9721011/ for Daniel Kalmar

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

12 years agoFix r11306 to use external references on X64.
mstarzinger@chromium.org [Fri, 13 Apr 2012 11:25:13 +0000 (11:25 +0000)]
Fix r11306 to use external references on X64.

R=jkummerow@chromium.org

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

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

12 years agoRegexp.rightContext was still not quite right. Fixed and
erik.corry@gmail.com [Fri, 13 Apr 2012 11:03:22 +0000 (11:03 +0000)]
Regexp.rightContext was still not quite right.  Fixed and
added more tests.
Review URL: https://chromiumcodereview.appspot.com/10008104

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

12 years agoProvide empty default implementation of OutputStream::WriteUint32Chunk to make Webkit...
jkummerow@chromium.org [Fri, 13 Apr 2012 10:57:17 +0000 (10:57 +0000)]
Provide empty default implementation of OutputStream::WriteUint32Chunk to make Webkit V8 bindings compile

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

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

12 years agoFix several ancient presubmit failures.
mstarzinger@chromium.org [Fri, 13 Apr 2012 09:58:29 +0000 (09:58 +0000)]
Fix several ancient presubmit failures.

R=jkummerow@chromium.org

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

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

12 years agoPrepare push to trunk. Now working on version 3.10.3.
jkummerow@chromium.org [Fri, 13 Apr 2012 09:44:33 +0000 (09:44 +0000)]
Prepare push to trunk.  Now working on version 3.10.3.

R=danno@chromium.org

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

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

12 years agoAdd isolate accessor to AccessorInfo and Arguments.
mstarzinger@chromium.org [Fri, 13 Apr 2012 09:38:00 +0000 (09:38 +0000)]
Add isolate accessor to AccessorInfo and Arguments.

This passes the isolate through to API callback functions so that it is
available through AccessorInfo and Arguments. This allows bindings to
avoid unnecessary TLS lookups to retrieve the current isolate.

R=danno@chromium.org
TEST=cctest/test-api,cctest/test-accessors

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

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

12 years agoPrepare DefinePropertyAccessor for callback transitions.
svenpanne@chromium.org [Fri, 13 Apr 2012 09:35:18 +0000 (09:35 +0000)]
Prepare DefinePropertyAccessor for callback transitions.

Although things are currently OK here, in the future it won't be enough to check
for the existence of a CALLBACKS result, we must additionally check that it
actually contains an accessor. In a nutshell: 'sed s/IsFound/IsProperty/' once
again...

Additionally, the control flow in DefinePropertyAccessor has been simplified by
using a helper function.

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

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

12 years agoBuild fix for Mac.
loislo@chromium.org [Fri, 13 Apr 2012 09:19:01 +0000 (09:19 +0000)]
Build fix for Mac.
warning: base class 'class v8::OutputStream' should be explicitly initialized in the copy constructor

BUG=none
TEST=none
TBR=mnaganov

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

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

12 years agoMIPS: Increase external array allocation header size to 8 bytes.
jkummerow@chromium.org [Fri, 13 Apr 2012 09:00:02 +0000 (09:00 +0000)]
MIPS: Increase external array allocation header size to 8 bytes.

This fixes alignment issues on MIPS HW, found for example in mjsunit external-array.
The issue originates from r11144 (86563c3e21) which adds a 4-byte header to these arrays.
This causes problems on MIPS, where certain pointers need to be 8-byte aligned.

BUG=
TEST=mjsunit/external-array

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

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

12 years agoThis patch is introducing a way to grab heap stats.
loislo@chromium.org [Fri, 13 Apr 2012 08:52:25 +0000 (08:52 +0000)]
This patch is introducing a way to grab heap stats.
The idea is to monitor the heap regulary and track each object in the heap.
With this data we will be able do draw heap usage diagram.
Where X is time and Y is the number of objects.

BUG=none
TEST=HeapSnapshotObjectsStats

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

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

12 years agoRemove line breaks that GYP didn't like
jkummerow@chromium.org [Fri, 13 Apr 2012 08:47:45 +0000 (08:47 +0000)]
Remove line breaks that GYP didn't like

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

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

12 years agoFix native ARM build
jkummerow@chromium.org [Fri, 13 Apr 2012 07:59:09 +0000 (07:59 +0000)]
Fix native ARM build

BUG=v8:1744, v8:539

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

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

12 years agoUntabify test/mjsunit/regress/regress-119609.js.
vegorov@chromium.org [Thu, 12 Apr 2012 20:29:48 +0000 (20:29 +0000)]
Untabify test/mjsunit/regress/regress-119609.js.

TBR=kmillikin@chromium.org

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

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

12 years agoReturn LOOKUP variable instead of CONTEXT for non-context allocated outer scope param...
vegorov@chromium.org [Thu, 12 Apr 2012 19:32:29 +0000 (19:32 +0000)]
Return LOOKUP variable instead of CONTEXT for non-context allocated outer scope parameters.

R=kmillikin@chromium.org
BUG=chromium:119609
TEST=test/mjsunit/regress/regress-119609.js

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

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

12 years agoFix regular and ElementsKind transitions interfering with each other
jkummerow@chromium.org [Thu, 12 Apr 2012 12:30:32 +0000 (12:30 +0000)]
Fix regular and ElementsKind transitions interfering with each other

R=danno@chromium.org
BUG=122271
TEST=mjsunit/regress/regress-crbug-122271

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

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

12 years agoRegexp: Fix rightContext in the lastMatchInfoOverride
erikcorry [Thu, 12 Apr 2012 12:13:18 +0000 (12:13 +0000)]
Regexp: Fix rightContext in the lastMatchInfoOverride
case.
Review URL: http://codereview.chromium.org/10068010

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

12 years agoCleanup test-alloc unit test case.
mstarzinger@chromium.org [Thu, 12 Apr 2012 10:06:32 +0000 (10:06 +0000)]
Cleanup test-alloc unit test case.

This makes the test-alloc test case more robust against changes to the
initial heap size. It correctly simulates a full space now instead of
trying to fill the space up by allocating filler objects.

R=svenpanne@chromium.org
TEST=cctest/test-alloc

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

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

12 years agoMIPS: NaNs in the snapshot should be quiet according
erik.corry@gmail.com [Thu, 12 Apr 2012 09:23:26 +0000 (09:23 +0000)]
MIPS: NaNs in the snapshot should be quiet according
to the MIPS FPU even when cross-building the snapshot.
This is based on code from Daniel Kalmar from
http://codereview.chromium.org/9910029/
Review URL: https://chromiumcodereview.appspot.com/10068006

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

12 years agoImprove performance of keyed loads/stores which have a HeapNumber index.
fschneider@chromium.org [Thu, 12 Apr 2012 08:35:30 +0000 (08:35 +0000)]
Improve performance of keyed loads/stores which have a HeapNumber index.

Some GWT compiled code results in array access that has a heap number (e.g. -0)
as an index. Until now this would result in a generic IC.

For example:

a[-0] === a[0] or

a[0.25 * 4] === a[1]

This change detects heap numbers that are representable as a smi
and converts them. As a result we can still use the fast keyed monomorphic
ICs. Optimized code already handles keyed access with a double-key efficiently.

As a result the frame rate on the reported benchmark improves by roughly 2x.

BUG=v8:1388,v8:1295
Review URL: https://chromiumcodereview.appspot.com/9837109

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

12 years agoPort regexp microoptimizations to MIPS. Also fix some formatting. This includes...
erik.corry@gmail.com [Thu, 12 Apr 2012 07:45:25 +0000 (07:45 +0000)]
Port regexp microoptimizations to MIPS.  Also fix some formatting.  This includes codereview.chromium.org/9965107/ from Daniel Kalmar

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

12 years agoFix compile error in r11279.
mstarzinger@chromium.org [Wed, 11 Apr 2012 15:47:46 +0000 (15:47 +0000)]
Fix compile error in r11279.

TBR=jkummerow@chromium.org

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

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

12 years agoFix WeakMap processing for evacuation candidates (2).
mstarzinger@chromium.org [Wed, 11 Apr 2012 15:32:31 +0000 (15:32 +0000)]
Fix WeakMap processing for evacuation candidates (2).

This fixes processing of WeakMaps so that keys on evacuation candidates
which are also reachable by other strong paths are correctly recorded in
the slots buffer.

Also backing stores that reside in the large-object-space now use the
correct anchor slot.

R=vegorov@chromium.org
BUG=v8:2060
TEST=cctest/test-weakmaps/Regress2060b

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

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

12 years agoSkip canonicalization check in LStoreKeyedFastDoubleElement when it is not needed:
vegorov@chromium.org [Wed, 11 Apr 2012 14:08:11 +0000 (14:08 +0000)]
Skip canonicalization check in LStoreKeyedFastDoubleElement when it is not needed:

- if value is a result of integer32 to double conversion (can't be NaN);

- if value was loaded from fast double backing store (already canonicalized).

R=danno@chromium.org

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

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

12 years agoA version of test-api.cc that compiles both on Mac and on Linux.
erikcorry [Wed, 11 Apr 2012 13:41:48 +0000 (13:41 +0000)]
A version of test-api.cc that compiles both on Mac and on Linux.
Review URL: http://codereview.chromium.org/10050013

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

12 years agoReland arguments access support for inlined functions (r11109,r11118).
vegorov@chromium.org [Wed, 11 Apr 2012 13:40:55 +0000 (13:40 +0000)]
Reland arguments access support for inlined functions (r11109,r11118).

When pushing arguments use correct initial values instead of fetching them from the environment which can be modified.

R=fschneider@chromium.org
TEST=test/mjsunit/compiler/inline-arguments.js

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

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

12 years agoFix presubmit error in r11270.
mstarzinger@chromium.org [Wed, 11 Apr 2012 11:45:14 +0000 (11:45 +0000)]
Fix presubmit error in r11270.

R=danno@chromium.org

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

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

12 years agoRemove write-barriers for stores to new-space objects.
mstarzinger@chromium.org [Wed, 11 Apr 2012 10:56:16 +0000 (10:56 +0000)]
Remove write-barriers for stores to new-space objects.

This change allows hydrogen instructions to keep track of instructions
that dominate certain side-effects (GVN flags) in the hydrogen graph. We
use the GVN pass to keep track of side-effects because accurate flags
are already in place.

It also adds a new side-effect (kChangesNewSpacePromotion) indicating
whether an instruction can cause a GC and have objects be promoted to
old-space. An object allocated in new-space is sure to stay on paths not
having said side-effect.

R=erik.corry@gmail.com
TEST=mjsunit/compiler/inline-construct

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

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

12 years agoFix Windows 64 bit compile.
erik.corry@gmail.com [Wed, 11 Apr 2012 10:18:42 +0000 (10:18 +0000)]
Fix Windows 64 bit compile.
Review URL: https://chromiumcodereview.appspot.com/10034014

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

12 years agoFix compile errors on 64 bit platforms.
erik.corry@gmail.com [Wed, 11 Apr 2012 09:55:20 +0000 (09:55 +0000)]
Fix compile errors on 64 bit platforms.
Review URL: https://chromiumcodereview.appspot.com/10053009

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

12 years agoFix external allocated memory accounting to use 64 bit values on
erik.corry@gmail.com [Wed, 11 Apr 2012 09:23:57 +0000 (09:23 +0000)]
Fix external allocated memory accounting to use 64 bit values on
64 bit architectures.
Review URL: https://chromiumcodereview.appspot.com/10020032

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

12 years agoFix WeakMap processing for evacuation candidates.
mstarzinger@chromium.org [Wed, 11 Apr 2012 09:14:29 +0000 (09:14 +0000)]
Fix WeakMap processing for evacuation candidates.

This fixes processing of WeakMaps so that value entries on an evacuation
candidate are correctly recorded in the slots buffer. We didn't pass the
correct slot into the backing hashtable while visiting values.

Also the live bytes counter for large object space pages was not reset
correctly when incremental marking is aborted.

R=vegorov@chromium.org
BUG=v8:2060
TEST=cctest/test-weakmaps/Regress2060

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

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

12 years agoI'd like to add addr field into EntryInfo struct.
loislo@chromium.org [Wed, 11 Apr 2012 06:58:42 +0000 (06:58 +0000)]
I'd like to add addr field into EntryInfo struct.
This will give us the ability to keep entries_ list sorted by id.
And based on that fact we will be able to use it for:
1) GetNodeById method and drop sorted version of entries list in HeapSnapshot;
2) building heap stats;
3) doing the fill stage instead of second iteration over heap.

BUG=none
TEST=none
R=yurys

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

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

12 years agoBailout on possible direct eval calls.
vegorov@chromium.org [Tue, 10 Apr 2012 13:41:00 +0000 (13:41 +0000)]
Bailout on possible direct eval calls.

Environment structure for such calls is different from normal global calls.

R=fschneider@chromium.org
BUG=chromium:122681

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

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

12 years agoInsert three missing FP register stack pop instructions.
fschneider@chromium.org [Tue, 10 Apr 2012 13:39:28 +0000 (13:39 +0000)]
Insert three missing FP register stack pop instructions.

We use fstp(0) already in other places. ffree does not pop the stack,
but only marks a FP register as empty.

BUG=v8:2065
Review URL: https://chromiumcodereview.appspot.com/9960066

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

12 years agoUse SortedListBSearch instead of custom one in heap profiler
yurys@chromium.org [Tue, 10 Apr 2012 11:24:09 +0000 (11:24 +0000)]
Use SortedListBSearch instead of custom one in heap profiler
Review URL: https://chromiumcodereview.appspot.com/10006032

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

12 years agoDo not assume that names of function expressions are context-allocated.
kmillikin@chromium.org [Tue, 10 Apr 2012 11:07:16 +0000 (11:07 +0000)]
Do not assume that names of function expressions are context-allocated.

The heap profile generator assumes that for named function expressions, the
name is context allocated.  This is not necessary true.

BUG=v8:2051
TEST=WebKit layout test inspector/profiler/heap-snapshot-inspect-dom-wrapper.html

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

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

12 years agoPrepare push to trunk. Now working on version 3.10.2.
fschneider@chromium.org [Tue, 10 Apr 2012 11:01:29 +0000 (11:01 +0000)]
Prepare push to trunk. Now working on version 3.10.2.
Review URL: https://chromiumcodereview.appspot.com/10024057

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

12 years agoEnsure that a call to String.prototype.match with a
erikcorry [Tue, 10 Apr 2012 10:42:25 +0000 (10:42 +0000)]
Ensure that a call to String.prototype.match with a
global regexp after a call to String.prototype.replace
with a function argument sets the last match info
correctly.  Bug=2058
Review URL: http://codereview.chromium.org/10029009

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

12 years agoRevert "External references should not affect dominance relation."
alexeif@chromium.org [Sun, 8 Apr 2012 19:18:06 +0000 (19:18 +0000)]
Revert "External references should not affect dominance relation."

This reverts commit 6e46549d13df2b211ea9b4fac9c09fe5013ec465.

BUG=
TEST=

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

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

12 years agoExternal references should not affect dominance relation.
alexeif@chromium.org [Sun, 8 Apr 2012 18:28:32 +0000 (18:28 +0000)]
External references should not affect dominance relation.

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

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

12 years agoFix presubmit warnings after r11245
yurys@chromium.org [Fri, 6 Apr 2012 14:52:20 +0000 (14:52 +0000)]
Fix presubmit warnings after r11245

TBR=mnaganov
Review URL: https://chromiumcodereview.appspot.com/10012040

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

12 years agoWe can avoid putting all nodes into a hash map from HeapEntry to ID and sorting that...
yurys@chromium.org [Fri, 6 Apr 2012 14:16:45 +0000 (14:16 +0000)]
We can avoid putting all nodes into a hash map from HeapEntry to ID and sorting that map as the nodes are already stored in right order in HeapSnapshot::entries_ list.
Review URL: https://chromiumcodereview.appspot.com/10012013

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

12 years agoFix presubmit error in r11243.
mstarzinger@chromium.org [Thu, 5 Apr 2012 16:40:13 +0000 (16:40 +0000)]
Fix presubmit error in r11243.

R=ulan@chromium.org
TEST=cctest/test-heap/OptimizedAllocationAlwaysInNewSpace

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

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

12 years agoEnsure HAllocateObject always allocates in new-space.
mstarzinger@chromium.org [Thu, 5 Apr 2012 15:36:31 +0000 (15:36 +0000)]
Ensure HAllocateObject always allocates in new-space.

This is needed so that we can start removing write-barriers in optimized
code if we can prove that the receiver object is always in new-space.

TEST=cctest/test-heap/OptimizedAllocationAlwaysInNewSpace

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

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

12 years agoFix glibc presence checks that are incorrectly triggered in some cases.
danno@chromium.org [Thu, 5 Apr 2012 15:22:51 +0000 (15:22 +0000)]
Fix glibc presence checks that are incorrectly triggered in some cases.

This allows compilation of V8 using uClibc.

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9702067
Patch from Daniel Kalmar <kalmard@homejinni.com>.

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

12 years agoMIPS: Remove static initializers in v8.
danno@chromium.org [Thu, 5 Apr 2012 15:18:22 +0000 (15:18 +0000)]
MIPS: Remove static initializers in v8.

Port r11010 (1daa81bc).

MIPS-specific changes:
-register codes and registers are defined using a macro to avoid redundancy
-renamed s8_fp to fp, removed the "fp" alias
-removed kSavedValueRegister (found by check-static-initializers.sh)

Original commit message:

Landing for pliard@chromium.org: Remove static initializers in v8.

This change includes two CLs by pliard@chromium.org:

1. http://codereview.chromium.org/9447052/ (Add CallOnce() and simple LazyInstance implementation):

Note that this implementation of LazyInstance does not handle global destructors (i.e. the lazy instances a

This CL was initially reviewed on codereview.appspot.com:
http://codereview.appspot.com/5687064/

2.  http://codereview.chromium.org/9455088/ (Remove static initializers in v8):
This CL depends on CL 9447052 (adding CallOnce and LazyInstance).
It is based on a patch sent by Digit.

With this patch applied, we have only one static initializer left (in atomicops_internals_x86_gcc.cc). This

This CL also modifies the presubmit script to check the number of static initializers.

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9689069
Patch from Daniel Kalmar <kalmard@homejinni.com>.

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

12 years agoMIPS: Ensure proper alignment of LazyInstance objects.
danno@chromium.org [Thu, 5 Apr 2012 15:12:28 +0000 (15:12 +0000)]
MIPS: Ensure proper alignment of LazyInstance objects.

The template system converts the actual struct type to an array of chars.
Make sure the alignment is kept by the compiler.

This fixes a lot of serialization-related HW tests, for example cctest test-serialize/Serialize.

BUG=
TEST=cctest test-serialize

Review URL: https://chromiumcodereview.appspot.com/9702114
Patch from Daniel Kalmar <kalmard@homejinni.com>.

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

12 years agoMinimize uses of lazy initialization by adding explicit initialization functions.
danno@chromium.org [Thu, 5 Apr 2012 14:10:39 +0000 (14:10 +0000)]
Minimize uses of lazy initialization by adding explicit initialization functions.

BUG=118686

Review URL: https://chromiumcodereview.appspot.com/9976003
Patch from Philippe Liard <pliard@chromium.org>.

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

12 years agoAdjust stack limit again to avoid overflow on 64 bit windows
danno@chromium.org [Thu, 5 Apr 2012 14:01:39 +0000 (14:01 +0000)]
Adjust stack limit again to avoid overflow on 64 bit windows

Also add additional stack check.

R=mstarzinger@chromium.org

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

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

12 years agoCheck for NaN in inlined versions of Math.min, Math.max.
ulan@chromium.org [Thu, 5 Apr 2012 13:24:52 +0000 (13:24 +0000)]
Check for NaN in inlined versions of Math.min, Math.max.

R=danno@chromium.org
BUG=V8:2056
TEST=mjsunit/regress/regress-2056.js

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

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

12 years agoFix stack overflows on Windows x64.
danno@chromium.org [Thu, 5 Apr 2012 12:32:35 +0000 (12:32 +0000)]
Fix stack overflows on Windows x64.

R=mstarzinger@chromium.org
TEST=win 64 not red anymore

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

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

12 years agoEnsure default isolate is present in Context::New().
danno@chromium.org [Thu, 5 Apr 2012 10:54:11 +0000 (10:54 +0000)]
Ensure default isolate is present in Context::New().

R=danno@chromium.org
BUG=chromium:118686
TEST=Run chrome with --single-process.

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

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

12 years agoRollback 11231: Add regression test case for issue 2025.
danno@chromium.org [Thu, 5 Apr 2012 08:35:32 +0000 (08:35 +0000)]
Rollback 11231: Add regression test case for issue 2025.

TBR=ulan@chromium.org

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

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

12 years agoAdd regression test case for issue 2025.
danno@chromium.org [Thu, 5 Apr 2012 08:08:05 +0000 (08:08 +0000)]
Add regression test case for issue 2025.

R=ulan@chromium.org
BUG=v8:2056
TEST=test/mjsunit/regress/regress-2056.js

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

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

12 years agoUpdate test262 expectations for 64-bit precision double for ARM and MIPS.
mstarzinger@chromium.org [Thu, 5 Apr 2012 07:59:01 +0000 (07:59 +0000)]
Update test262 expectations for 64-bit precision double for ARM and MIPS.

The two tests (S8.5_A2.1, S8.5_A2.2) fail on ia32 Linux and simulators.
They do pass on ARM and MIPS hardware under Linux, and on the other
supported platforms and architectures.

They are now marked PASS || FAIL_OK.

BUG=
TEST=test262/S8.5_A2.1, test262/S8.5_A2.2

Review URL: https://chromiumcodereview.appspot.com/9959146
Patch from Paul Lind <plind44@gmail.com>.

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

12 years agoRegression test for large string joins.
mstarzinger@chromium.org [Wed, 4 Apr 2012 14:37:07 +0000 (14:37 +0000)]
Regression test for large string joins.

BUG=none
TEST=cctest/test-strings/AsciiArrayJoin

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

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

12 years agoFix presubmit checks after r11223
yurys@chromium.org [Wed, 4 Apr 2012 14:33:03 +0000 (14:33 +0000)]
Fix presubmit checks after r11223

TBR=mnaganov
Review URL: https://chromiumcodereview.appspot.com/9961008

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

12 years agoEnsure default isolate is present in Add/RemoveCallCompletedCallback.
danno@chromium.org [Wed, 4 Apr 2012 14:28:00 +0000 (14:28 +0000)]
Ensure default isolate is present in Add/RemoveCallCompletedCallback.

R=ulan@chromium.org,pliard@chromium.org
BUG=ui_tests don't crash in Chrome

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

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

12 years agoFix rewriter to not treat throw as an expression.
mstarzinger@chromium.org [Wed, 4 Apr 2012 13:41:05 +0000 (13:41 +0000)]
Fix rewriter to not treat throw as an expression.

Now we can correctly optimize top level code that contains a throw (or
return) as it's last statement.

R=ulan@chromium.org
BUG=v8:2054
TEST=mjsunit/regress/regress-2054

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

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

12 years agoSwitching to a custom itoa implementation reduces serialization time at least by...
yurys@chromium.org [Wed, 4 Apr 2012 13:36:57 +0000 (13:36 +0000)]
Switching to a custom itoa implementation reduces serialization time at least by the factor of 2.
Review URL: https://chromiumcodereview.appspot.com/9950146

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

12 years agoReset function info counters after context disposal in incremental marking step.
ulan@chromium.org [Tue, 3 Apr 2012 17:22:05 +0000 (17:22 +0000)]
Reset function info counters after context disposal in incremental marking step.

R=mstarzinger@chromium.org
BUG=117767,V8:1902
TEST=test/cctest/test-heap/ResetSharedFunctionInfoCountersDuringIncrementalMarking

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

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

12 years agoFix array boilerplate object transitioning.
mstarzinger@chromium.org [Tue, 3 Apr 2012 16:54:28 +0000 (16:54 +0000)]
Fix array boilerplate object transitioning.

Array literal boilerplate objects can be transitioned while existing
un-transitioned clones are still being populated. This adds a check that
prevents us from performing the same transition twice.

R=danno@chromium.org
BUG=v8:2055
TEST=mjsunit/regress/regress-2055

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

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

12 years agoFix stack overflow test failures with no snap.
danno@chromium.org [Tue, 3 Apr 2012 15:54:07 +0000 (15:54 +0000)]
Fix stack overflow test failures with no snap.

R=mstarzinger@chromium.org
BUG=chromium:119429

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

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

12 years agoDon't crash on stack overflow entering the debugger.
danno@chromium.org [Tue, 3 Apr 2012 13:45:56 +0000 (13:45 +0000)]
Don't crash on stack overflow entering the debugger.

R=ager@chromium.org, sgjesse@chromium.org
BUG=chromium:119429
TEST= test/mjsunit/regress/regress-119429.js

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

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

12 years agoSwitch regexp strategy for regexps that are just plain
erik.corry@gmail.com [Tue, 3 Apr 2012 12:24:55 +0000 (12:24 +0000)]
Switch regexp strategy for regexps that are just plain
strings with a small alphabet.  We already have code
that handles these regexps well, we were just not always
activating it.
Review URL: https://chromiumcodereview.appspot.com/9959096

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

12 years agoFix race condition in test-thread-termination.
mstarzinger@chromium.org [Tue, 3 Apr 2012 10:15:12 +0000 (10:15 +0000)]
Fix race condition in test-thread-termination.

The test case failed to stop the preemption thread before destroying the
isolate which led to a race condition where the isolate was accessed
after it had been destroyed.

R=ulan@chromium.org
BUG=v8:2049
TEST=cctest/test-thread-termination/TerminateMultipleV8ThreadsDefaultIsolate

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

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

12 years agoProperly support shrinking arrays in CopyDictionaryToObjectElements.
danno@chromium.org [Tue, 3 Apr 2012 08:13:59 +0000 (08:13 +0000)]
Properly support shrinking arrays in CopyDictionaryToObjectElements.

R=mstarzinger@chromium.org
BUG=chromium:121407
TEST=test/mjsunit/regress/regress-121407.js

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

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

12 years agoMake progress in incremental marking if scavenge is delaying mark-sweep.
ulan@chromium.org [Tue, 3 Apr 2012 07:32:19 +0000 (07:32 +0000)]
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

12 years agoAdding missing SetCC before conditional branch.
danno@chromium.org [Mon, 2 Apr 2012 15:53:38 +0000 (15:53 +0000)]
Adding missing SetCC before conditional branch.

BUG=none
TEST=none

Review URL: https://chromiumcodereview.appspot.com/9950015
Patch from Rodolph Perfetta <rodolph.perfetta@gmail.com>.

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

12 years agoLoosen up the test for boot time memory use on 64 bit.
erik.corry@gmail.com [Mon, 2 Apr 2012 13:29:04 +0000 (13:29 +0000)]
Loosen up the test for boot time memory use on 64 bit.
Review URL: https://chromiumcodereview.appspot.com/9969051

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

12 years agoCheck code kind when resetting profiler ticks.
ulan@chromium.org [Mon, 2 Apr 2012 13:27:41 +0000 (13:27 +0000)]
Check code kind when resetting profiler ticks.

BUG=121147
TEST=chromium gpu_tests/WebGLConformanceTests

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

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

12 years agoCosmetic (ARM/MIPS): Use FieldMemOperand where appropriate.
erik.corry@gmail.com [Mon, 2 Apr 2012 13:26:05 +0000 (13:26 +0000)]
Cosmetic (ARM/MIPS): Use FieldMemOperand where appropriate.
Review URL: https://chromiumcodereview.appspot.com/9963051

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

12 years agoMIPS: RegExp: Add support for table-based character class code generation. This...
erik.corry@gmail.com [Mon, 2 Apr 2012 11:27:37 +0000 (11:27 +0000)]
MIPS: RegExp: Add support for table-based character class code generation.   This is a commit of codereview.chromium.org/9968032/ for Daniel Kalmar

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

12 years agoChange ASSERT(kind() == FUNCTION) to ASSERT_EQ(FUNCTION, kind()).
ulan@chromium.org [Mon, 2 Apr 2012 10:57:17 +0000 (10:57 +0000)]
Change ASSERT(kind() == FUNCTION) to ASSERT_EQ(FUNCTION, kind()).

R=mstarzinger@chromium.org

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

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

12 years agoRegexp: Improve the speed that we scan for an initial point where a non-anchored
erikcorry [Mon, 2 Apr 2012 09:38:07 +0000 (09:38 +0000)]
Regexp: Improve the speed that we scan for an initial point where a non-anchored
regexp can match by using a Boyer-Moore-like table.  This is done by identifying
non-greedy non-capturing loops in the nodes that eat any character one at a time.
For example in the middle of the regexp /foo[\s\S]*?bar/ we find such a loop.
There is also such a loop implicitly inserted at the start of any non-anchored
regexp.

When we have found such a loop we look ahead in the nodes to find the set of
characters that can come at given distances.  For example for the regexp
/.?foo/ we know that there are at least 3 characters ahead of us, and the sets
of characters that can occur are [any, [f, o], [o]].  We find a range in the
lookahead info where the set of characters is reasonably constrained.  In our
example this is from index 1 to 2 (0 is not constrained).  We can now look 3
characters ahead and if we don't find one of [f, o] (the union of [f, o] and
[o]) then we can skip forwards by the range size (in this case 2).

For Unicode input strings we do the same, but modulo 128.

We also look at the first string fed to the regexp and use that to get a hint
of the character frequencies in the inputs.  This affects the assessment of
whether the set of characters is 'reasonably constrained'.

We still have the old lookahead mechanism, which uses a wide load of multiple
characters followed by a mask and compare to determine whether a match is
possible at this point.
Review URL: http://codereview.chromium.org/9965010

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

12 years agoReduce initial boot-up memory use. This is an other attempt at what
erik.corry@gmail.com [Mon, 2 Apr 2012 08:32:31 +0000 (08:32 +0000)]
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

12 years agoFix hidden properties to ignore [[Extensible]].
mstarzinger@chromium.org [Mon, 2 Apr 2012 08:26:30 +0000 (08:26 +0000)]
Fix hidden properties to ignore [[Extensible]].

The [[Extensible]] property prevented the very first hidden property
from being added. If any hidden property was added to the object before
preventing extension, adding subsequent hidden properties would have
succeed however.

R=svenpanne@chromium.org
BUG=v8:2034
TEST=mjsunit/regress/regress-2034

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

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

12 years agoFix broken build on Windows due to r11198.
danno@chromium.org [Fri, 30 Mar 2012 20:48:32 +0000 (20:48 +0000)]
Fix broken build on Windows due to r11198.

This also fixes a style issue in lazy-instance.h.

Review URL: https://chromiumcodereview.appspot.com/9960006
Patch from Philippe Liard <pliard@chromium.org>.

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

12 years agoAdd support for Mac OS X 64bit builds with GYP
jkummerow@chromium.org [Fri, 30 Mar 2012 15:01:11 +0000 (15:01 +0000)]
Add support for Mac OS X 64bit builds with GYP

Note that in order to build for 64bits mode, you'll have
to specify the target architecture explicitely, the default
is still 32bits for Mac OS X.

Example with make and gcc:

$ export GYP_GENERATORS=make
$ make dependencies
$ make -j 8 library=shared x64.release

Example with make and clang:

$ export GYP_GENERATORS=make
$ export CC=/usr/bin/clang
$ export CXX=/usr/bin/clang++
$ export GYP_DEFINES="clang=1"
$ make dependencies
$ make -j 8 library=shared x64.release

Example with xcode:

$ export GYP_GENERATORS=xcode
$ build/gyp_v8 -Dtarget_arch=x64
$ xcodebuild -project build/all.xcodeproj -configuration Release

Contributed by Filipe David Manana <fdmanana@gmail.com>

BUG=
TEST=

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

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

12 years agoFix performance regressions due to lazy initialization.
danno@chromium.org [Fri, 30 Mar 2012 14:30:46 +0000 (14:30 +0000)]
Fix performance regressions due to lazy initialization.

This CL:
- Adds a new trait parameter to LazyInstance to let it initialize the instance
  without paying the cost of atomic operations (which are expensive on Mac).
  This only works for users who don't care about thread-safety and this is now
the default initialization trait used by LazyInstance in v8.

- Reverts the changes that were made in r11010 in isolate.{cc,h}. That lets
  Isolate's accessors be as cheap as they were before (but adds one static initializer).

- Adds OS::PostSetup() used to initialize the math functions which depend on CPU features.
That lets the math functions get rid of CallOnce().

BUG=118686

Review URL: https://chromiumcodereview.appspot.com/9873023
Patch from Philippe Liard <pliard@chromium.org>.

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

12 years agoFix scoping of v8::HandleScope to prevent use-after-dispose
danno@chromium.org [Fri, 30 Mar 2012 13:49:40 +0000 (13:49 +0000)]
Fix scoping of v8::HandleScope to prevent use-after-dispose

R=jkummerow@chromium.org
TEST=shell_g doesn't crash

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

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

12 years agoEnsure that arguments object is materialized when deoptimizing from inlined function.
vegorov@chromium.org [Fri, 30 Mar 2012 13:22:39 +0000 (13:22 +0000)]
Ensure that arguments object is materialized when deoptimizing from inlined function.

Lithium translation rebuilds hydrogen environments from scratch so we have to ensure that arguments object is correctly bound on function entry otherwise deoptimization will not materialize it.

This fix was implemented as part of r11109 and then reverted.

R=danno@chromium.org
BUG=v8:2045
TEST=test/mjsunit/regress/regress-2045.js

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

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

12 years agoPrepare push to trunk. Now working on version 3.10.1.
jkummerow@chromium.org [Fri, 30 Mar 2012 08:35:30 +0000 (08:35 +0000)]
Prepare push to trunk.  Now working on version 3.10.1.

R=danno@chromium.org

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

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

12 years agoFix missing static cast on Windows.
erik.corry@gmail.com [Fri, 30 Mar 2012 07:55:16 +0000 (07:55 +0000)]
Fix missing static cast on Windows.
Review URL: https://chromiumcodereview.appspot.com/9963006

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

12 years agoRegExp: Add support for table-based character class
erik.corry@gmail.com [Fri, 30 Mar 2012 07:43:48 +0000 (07:43 +0000)]
RegExp: Add support for table-based character class
code generation.  This is performance neutral for
all our tests, but a factor 6 faster for the Unicode
based regexp in the new test (and much more compact
code).
Review URL: https://chromiumcodereview.appspot.com/9854020

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

12 years agoFix presubmit check.
loislo@chromium.org [Thu, 29 Mar 2012 14:50:26 +0000 (14:50 +0000)]
Fix presubmit check.

BUG=none
TEST=none
TBR=mnaganov

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

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

12 years agoCurrent schema of calculation max_snapshot_js_object_id is not always correct.
loislo@chromium.org [Thu, 29 Mar 2012 14:18:11 +0000 (14:18 +0000)]
Current schema of calculation max_snapshot_js_object_id is not always correct.
As the result the test is flaky.

BUG=v8/2042
TEST=HeapEntryIdsAndGC
R=mnaganov

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

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

12 years agoFix offset computation for EmitProfilingCounterReset in x64.
ulan@chromium.org [Thu, 29 Mar 2012 14:04:41 +0000 (14:04 +0000)]
Fix offset computation for EmitProfilingCounterReset in x64.

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

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

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

12 years agoUn-bork v8.gyp after r11010
jkummerow@chromium.org [Thu, 29 Mar 2012 14:01:21 +0000 (14:01 +0000)]
Un-bork v8.gyp after r11010

TEST=no more warning "Missing input file tools\gyp\..\..\src\src\list-inl.h"

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

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

12 years agoValgrind cleanliness, part 5: Delete extensions on exit.
svenpanne@chromium.org [Thu, 29 Mar 2012 09:45:46 +0000 (09:45 +0000)]
Valgrind cleanliness, part 5: Delete extensions on exit.

This fixes 4 leaks, returning 196 bytes of lost memory.

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

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

12 years agoAllow a commit message to be specified to merge-to-branch.sh
danno@chromium.org [Thu, 29 Mar 2012 07:01:36 +0000 (07:01 +0000)]
Allow a commit message to be specified to merge-to-branch.sh

R=jkummerow@chromium.org

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

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

12 years agoAdd missing regression test for r11173.
mstarzinger@chromium.org [Wed, 28 Mar 2012 15:17:14 +0000 (15:17 +0000)]
Add missing regression test for r11173.

R=svenpanne@chromium.org
BUG=chromium:12009
TEST=mjsunit/regress/regress-120099

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

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

12 years agoValgrind cleanliness, part 2: Delete lithium operand caches on exit.
svenpanne@chromium.org [Wed, 28 Mar 2012 13:12:00 +0000 (13:12 +0000)]
Valgrind cleanliness, part 2: Delete lithium operand caches on exit.

This fixes 5 leaks, returning 1.6kB of lost memory.

Shocking news: I've actually introduced a 2nd-order macro for myself. I guess
I've been assimilated... ;-)

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

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

12 years agoMIPS: First implementation of fast path for instantiation of array literals composed...
svenpanne@chromium.org [Wed, 28 Mar 2012 12:44:04 +0000 (12:44 +0000)]
MIPS: First implementation of fast path for instantiation of array literals composed of doubles.

Port r11114 (d8c975164).

BUG=
TEST=

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

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

12 years agoHard-code GYP_GENERATORS=make into top-level Makefile
jkummerow@chromium.org [Wed, 28 Mar 2012 12:42:49 +0000 (12:42 +0000)]
Hard-code GYP_GENERATORS=make into top-level Makefile

removing the need to manually specify this on platforms where it's not the default (Mac).

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

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

12 years agoReset the optimization_disabled flag in function info after context disposal.
ulan@chromium.org [Wed, 28 Mar 2012 09:47:53 +0000 (09:47 +0000)]
Reset the optimization_disabled flag in function info after context disposal.
R=jkummerow@chromium.org

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

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

12 years agoFix store IC writability check in strict mode.
mstarzinger@chromium.org [Wed, 28 Mar 2012 09:34:52 +0000 (09:34 +0000)]
Fix store IC writability check in strict mode.

The store ICs should only check writability attributes for actual
properties and not for map transitions.

R=jkummerow@chromium.org,svenpanne@chromium.org
BUG=chromium:120099
TEST=mjsunit/regress/regress-120099

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

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