verwaest@chromium.org [Fri, 26 Apr 2013 15:30:41 +0000 (15:30 +0000)]
Track storage types of instance variables.
Review URL: https://chromiumcodereview.appspot.com/
14146005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14464
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Fri, 26 Apr 2013 15:10:34 +0000 (15:10 +0000)]
Fix build failure on Win64 since r14458.
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/
14143008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14463
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mvstanton@chromium.org [Fri, 26 Apr 2013 14:26:54 +0000 (14:26 +0000)]
Change 'Parse error' to three more informative messages.
Replace the 'unable_to_parse' key used in three places with three difference keys.
Provide three more informative and less ambiguous error messages in place of 'Parse error'.
Add three test/message cases to cover the new messages.
BUG=2636
Review URL: https://codereview.chromium.org/
14161007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14462
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dcarney@chromium.org [Fri, 26 Apr 2013 14:08:18 +0000 (14:08 +0000)]
remove IsOneByteConvertible
R=ulan@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
14298021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14461
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mvstanton@chromium.org [Fri, 26 Apr 2013 14:04:07 +0000 (14:04 +0000)]
Lithium: avoid registers for constants when possible.
BUG=
Review URL: https://codereview.chromium.org/
14364010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14460
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Fri, 26 Apr 2013 13:22:11 +0000 (13:22 +0000)]
Add assertion about module scopes to Scope::ContextChainLength.
R=rossberg@chromium.org
Review URL: https://codereview.chromium.org/
14513002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14459
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Fri, 26 Apr 2013 12:09:32 +0000 (12:09 +0000)]
Add support for yield expressions
This CL extends the generator suspend and resume implementation to
capture values on the operand stack.
It factors out some helpers to measure and access the operand stack into
the JavaScriptFrame class. It also refactors the suspend and resume
helpers to avoid handle allocation.
BUG=v8:2355
TEST=mjsunit/harmony/generators-iteration
Review URL: https://codereview.chromium.org/
14348003
Patch from Andy Wingo <wingo@igalia.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14458
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
danno@chromium.org [Fri, 26 Apr 2013 11:59:17 +0000 (11:59 +0000)]
Prepare push to trunk. Now working on version 3.18.5.
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/
13886016
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14455
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Fri, 26 Apr 2013 11:55:22 +0000 (11:55 +0000)]
Fix yield inside with
This patch makes it so that suspending generators always saves the
context. Previously we erroneously assumed that if the operand stack
was empty, that the context would be unchanged, but that is not the case
with "with".
Fixing this brought out an interesting bug in the variable allocator.
Yield inside with will reference a context-allocated temporary holding
the generator object. Before the fix, this object was looked up in the
with context instead of the function context, because with contexts were
not being simulated during full-codegen. Previously this was OK as all
variables would be given LOOKUP allocation instead of CONTEXT, but the
context-allocated temporary invalidated this assumption. The fix is to
simulate the context chain more accurately in full-codegen.
R=mstarzinger@chromium.org
BUG=v8:2355
TEST=mjsunit/harmony/generators-iteration
Review URL: https://codereview.chromium.org/
14416011
Patch from Andy Wingo <wingo@igalia.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14454
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dcarney@chromium.org [Fri, 26 Apr 2013 11:34:44 +0000 (11:34 +0000)]
HasOnlyAsciiChars can return incorrect results. Fixup usages and rename.
R=ulan@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
14509012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14453
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dcarney@chromium.org [Fri, 26 Apr 2013 10:52:14 +0000 (10:52 +0000)]
forgot parends around macro arg
R=svenpanne@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
14334009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14452
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mvstanton@chromium.org [Fri, 26 Apr 2013 10:10:36 +0000 (10:10 +0000)]
Bootstrapper code for constructed arrays needs to be handlefied
BUG=
Review URL: https://codereview.chromium.org/
14008004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14451
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Fri, 26 Apr 2013 08:52:35 +0000 (08:52 +0000)]
Implement support for Math.imul in Crankshaft.
R=jkummerow@chromium.org
TEST=mjsunit/math-imul
Review URL: https://codereview.chromium.org/
14471041
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14450
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mvstanton@chromium.org [Fri, 26 Apr 2013 08:49:20 +0000 (08:49 +0000)]
Fix test/build failures (win64 compile warning, isolate test parallel compilation failure, gcmole issue, isolate test intermittant failure)
BUG=
Review URL: https://codereview.chromium.org/
14265024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14449
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Fri, 26 Apr 2013 08:47:02 +0000 (08:47 +0000)]
Better handling of Phi nodes with constant inputs
Review URL: https://codereview.chromium.org/
14471034
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14448
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Fri, 26 Apr 2013 08:12:21 +0000 (08:12 +0000)]
Prevent false positive from GCMole in DeferredFormatStackTrace.
R=yangguo@chromium.org
TEST=gcmole
Review URL: https://codereview.chromium.org/
14416010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14447
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yurys@chromium.org [Fri, 26 Apr 2013 07:50:35 +0000 (07:50 +0000)]
Avoid unnecessary indirection when creating CodeEntries
BUG=None
Review URL: https://codereview.chromium.org/
14471035
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14446
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Fri, 26 Apr 2013 07:35:07 +0000 (07:35 +0000)]
Do not dereference handles during relocation.
R=hpayer@chromium.org
BUG=
Review URL: https://chromiumcodereview.appspot.com/
13982023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14445
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dcarney@chromium.org [Fri, 26 Apr 2013 07:28:08 +0000 (07:28 +0000)]
Defer slow branch of GetAlignedPointerFromInternalField
BUG=
Review URL: https://codereview.chromium.org/
14137026
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14444
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
palfia@homejinni.com [Fri, 26 Apr 2013 02:08:47 +0000 (02:08 +0000)]
MIPS: Constructed arrays can be created with Hydrogen code stubs. The feature is still off by default (--optimize-constructed-arrays).
Port r14441 (
0c30d023)
BUG=
Review URL: https://codereview.chromium.org/
13905009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14443
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
palfia@homejinni.com [Fri, 26 Apr 2013 02:07:42 +0000 (02:07 +0000)]
MIPS: Capture receiver in generator object
Port r14434 (
04f254d1)
Original commit message:
Previously there has been no reason to context-allocate the receiver, so
access to the receiver always goes through the stack. This was failing
with generators, which assumed that forcing context allocation would
relieve the need of storing anything but the context and the function on
the stack.
This CL adds a slot in generator objects to capture the receiver, and
restores it when resuming a generator.
BUG=v8:2355
TEST=mjsunit/harmony/generators-iteration
Review URL: https://codereview.chromium.org/
14195033
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14442
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mvstanton@chromium.org [Thu, 25 Apr 2013 16:00:32 +0000 (16:00 +0000)]
Constructed arrays can be created with Hydrogen code stubs. The feature is still off by default (--optimize-constructed-arrays).
BUG=
Review URL: https://codereview.chromium.org/
12385014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14441
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dslomov@chromium.org [Thu, 25 Apr 2013 12:34:45 +0000 (12:34 +0000)]
Win64 build
R=rossberg@chromium.org,mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/
14392013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14440
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
hpayer@chromium.org [Thu, 25 Apr 2013 12:08:10 +0000 (12:08 +0000)]
Tell the GC prologues to construct RetainedObjectInfos only when needed.
The GC prologue is called by the GC, but also by the heap snapshotter. The
RetainedObjectInfos are only needed by the heap snapshotter, so it's wasteful to
construct them always. (And it will be even more wasteful when Blink migrates to
the new GC APIs, since after that point it no longer knows about object groups.)
BUG=
Review URL: https://codereview.chromium.org/
14471028
Patch from Marja Hölttä <marja@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14439
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dslomov@chromium.org [Thu, 25 Apr 2013 12:02:23 +0000 (12:02 +0000)]
First cut at API for ES6 ArrayBuffers
R=rossberg@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
13958007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14438
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Thu, 25 Apr 2013 12:00:07 +0000 (12:00 +0000)]
Relax --debug-code checks that runtime returns are not the hole
ia32, unlike the other architectures, includes a --debug-code check that
asserts that runtime functions do not return the hole. However the new
SuspendJSGeneratorObject runtime does return the hole at times.
This CL adds a wee hack that only signals an error if the callee was not
SuspendJSGeneratorObject.
R=mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
13856011
Patch from Andy Wingo <wingo@igalia.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14437
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Thu, 25 Apr 2013 10:59:09 +0000 (10:59 +0000)]
Capture receiver in generator object
Previously there has been no reason to context-allocate the receiver, so
access to the receiver always goes through the stack. This was failing
with generators, which assumed that forcing context allocation would
relieve the need of storing anything but the context and the function on
the stack.
This CL adds a slot in generator objects to capture the receiver, and
restores it when resuming a generator.
BUG=v8:2355
TEST=mjsunit/harmony/generators-iteration
Review URL: https://codereview.chromium.org/
14158006
Patch from Andy Wingo <wingo@igalia.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14434
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Thu, 25 Apr 2013 10:57:24 +0000 (10:57 +0000)]
Get isolate from thread local instead of (potentially missing) block in HConstant.
R=ulan@chromium.org
BUG=
Review URL: https://chromiumcodereview.appspot.com/
14284011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14433
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Thu, 25 Apr 2013 10:23:19 +0000 (10:23 +0000)]
Fix evaluation order problems in Object.observe hooks.
R=rossberg@chromium.org
TEST=gcmole
Review URL: https://codereview.chromium.org/
14493012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14432
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
hpayer@chromium.org [Thu, 25 Apr 2013 09:17:07 +0000 (09:17 +0000)]
Grow the old generation faster in high promotion mode.
BUG=
Review URL: https://codereview.chromium.org/
14493011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14431
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Thu, 25 Apr 2013 07:36:59 +0000 (07:36 +0000)]
Fix overflow check in mul-i which was missing since r14322
Review URL: https://codereview.chromium.org/
14471012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14430
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
palfia@homejinni.com [Wed, 24 Apr 2013 23:12:53 +0000 (23:12 +0000)]
MIPS: Clean up VMState a little bit.
Port r14421 (
31cd7dda)
BUG=
Review URL: https://codereview.chromium.org/
14483002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14429
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
palfia@homejinni.com [Wed, 24 Apr 2013 23:11:48 +0000 (23:11 +0000)]
MIPS: Generators can resume
Port r14415 (
d358defa) and r14424 (
7b549ce7)
Original commit message:
The generator object methods "next", "send", and "throw" now
include some inline assembly to set up a resumed stack frame. In some
common cases, we can just jump back into the frame to resume it.
Otherwise the resume code calls out to a runtime to fill in the operand
stack, rewind the handlers, and possibly to throw an exception.
BUG=v8:2355
TESTS=mjsunit/harmony/generators-iteration
Review URL: https://codereview.chromium.org/
13864010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14428
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
palfia@homejinni.com [Wed, 24 Apr 2013 23:10:53 +0000 (23:10 +0000)]
MIPS: Add monomorphic CompareNilICs and Crankshaft support
Port r14407 (
cae6596b)
BUG=
Review URL: https://codereview.chromium.org/
13840006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14427
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
plind44@gmail.com [Wed, 24 Apr 2013 19:10:02 +0000 (19:10 +0000)]
MIPS: Fix NaN handling for start index in ArraySplice.
Casting NaN to int is unpredictable, on different architectures it produces different int value.
TEST=test262/S15.4.4.10_A2.1_T2, S15.4.4.10_A2.2_T2, S15.4.4.12_A2.1_T2
BUG=
Review URL: https://codereview.chromium.org/
14257006
Patch from Dusan Milosavljevic <Dusan.Milosavljevic@rt-rk.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14426
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Wed, 24 Apr 2013 16:51:00 +0000 (16:51 +0000)]
Remove bogus forward declaration of ObjectGroup.
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/
14333016
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14425
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Wed, 24 Apr 2013 16:07:44 +0000 (16:07 +0000)]
Fix generator suspend and resume on ARM
This CL fixes a number of rookie mistakes in
FullCodeGenerator::VisitYield and
FullCodeGenerator::EmitGeneratorResume, and re-enables the
generators-iteration test on ARM.
R=mstarzinger@chromium.org
BUG=v8:2355
TEST=mjsunit/harmony/generators-iteration
Review URL: https://codereview.chromium.org/
13843022
Patch from Andy Wingo <wingo@igalia.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14424
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Wed, 24 Apr 2013 15:59:23 +0000 (15:59 +0000)]
New GC APIs, try 2.
With these APIs, the embedder doesn't need to copy Persistent handles around.
BUG=
Review URL: https://codereview.chromium.org/
14007008
Patch from Marja Hölttä <marja@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14423
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
svenpanne@chromium.org [Wed, 24 Apr 2013 14:51:14 +0000 (14:51 +0000)]
Fixed HUnaryMathOperation regarding its possible operations.
Review URL: https://codereview.chromium.org/
14333013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14422
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Wed, 24 Apr 2013 14:44:08 +0000 (14:44 +0000)]
Clean up VMState a little bit.
R=svenpanne@chromium.org
BUG=
Review URL: https://chromiumcodereview.appspot.com/
14139033
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14421
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dcarney@chromium.org [Wed, 24 Apr 2013 14:23:46 +0000 (14:23 +0000)]
Change cctest/test-lockers to not copy persistent handles around.
Instead, create Local handles to pass them around. This also means that the
code needs to be shifted around a bit such that a handle scope exists when
creating threads.
Review URL: https://codereview.chromium.org/
14150017
Patch from Jochen Eisinger <jochen@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14420
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Wed, 24 Apr 2013 14:05:37 +0000 (14:05 +0000)]
Fix windows build.
R=svenpanne@chromium.org
BUG=
Review URL: https://chromiumcodereview.appspot.com/
14476003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14417
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Wed, 24 Apr 2013 13:52:26 +0000 (13:52 +0000)]
Remove Isolate::Current() from histograms.
R=svenpanne@chromium.org
BUG=
Review URL: https://chromiumcodereview.appspot.com/
14471007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14416
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Wed, 24 Apr 2013 13:00:16 +0000 (13:00 +0000)]
Generators can resume
The generator object methods "next", "send", and "throw" now
include some inline assembly to set up a resumed stack frame. In some
common cases, we can just jump back into the frame to resume it.
Otherwise the resume code calls out to a runtime to fill in the operand
stack, rewind the handlers, and possibly to throw an exception.
BUG=v8:2355
TESTS=mjsunit/harmony/generators-iteration
Review URL: https://codereview.chromium.org/
14066016
Patch from Andy Wingo <wingo@igalia.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14415
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
svenpanne@chromium.org [Wed, 24 Apr 2013 12:43:33 +0000 (12:43 +0000)]
MathSqrt and MathPowHalf do not cause any promotion.
Review URL: https://codereview.chromium.org/
13829009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14414
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Wed, 24 Apr 2013 12:39:30 +0000 (12:39 +0000)]
Properly consider Double inputs for representation inference when they are not marked as kFlexibleRepresentation
Review URL: https://codereview.chromium.org/
14408006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14413
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yurys@chromium.org [Wed, 24 Apr 2013 12:09:04 +0000 (12:09 +0000)]
Fix segmentation fault in CodeMap::Print
CodeEntry* is always NULL for SharedFunctionInfo entries in the CodeMap. Take this into account when printing the map.
Drive-by: removed CodeEntry::shared_id() which is never called.
BUG=None
Review URL: https://codereview.chromium.org/
14387004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14410
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Wed, 24 Apr 2013 12:01:08 +0000 (12:01 +0000)]
Simplify some code related to x64 calling convention.
R=mvstanton@chromium.org
BUG=
Review URL: https://chromiumcodereview.appspot.com/
13940014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14409
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Wed, 24 Apr 2013 11:44:39 +0000 (11:44 +0000)]
Fix clang build for x64.
R=ulan@chromium.org
BUG=
Review URL: https://chromiumcodereview.appspot.com/
14471004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14408
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
danno@chromium.org [Wed, 24 Apr 2013 11:32:17 +0000 (11:32 +0000)]
Add monomorphic CompareNilICs and Crankshaft support
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/
14367018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14407
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
danno@chromium.org [Wed, 24 Apr 2013 11:20:16 +0000 (11:20 +0000)]
Replace qsort with std::sort.
std::sort is a template, so it can be inlined more aggressively. Also, it's
O(n log n), while libc's qsort is O(n^2)
BUG=2639
Review URL: https://codereview.chromium.org/
14315005
Patch from Jochen Eisinger <jochen@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14406
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ulan@chromium.org [Wed, 24 Apr 2013 10:57:15 +0000 (10:57 +0000)]
Prepare push to trunk. Now working on version 3.18.4.
R=yangguo@chromium.org
Review URL: https://chromiumcodereview.appspot.com/
14139031
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14403
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
svenpanne@chromium.org [Wed, 24 Apr 2013 09:31:55 +0000 (09:31 +0000)]
Removed unbalanced brackets when printing an LEnvironment.
Review URL: https://codereview.chromium.org/
14286005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14402
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mvstanton@chromium.org [Wed, 24 Apr 2013 09:14:56 +0000 (09:14 +0000)]
If the input to an HChange is of type smi, then no need to mark gvn flag changes new space promotion.
BUG=
Review URL: https://codereview.chromium.org/
14253010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14401
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Wed, 24 Apr 2013 07:39:35 +0000 (07:39 +0000)]
Refactor ExternalReference::isolate_address() to not rely on Isolate::Current().
R=svenpanne@chromium.org
BUG=
Review URL: https://chromiumcodereview.appspot.com/
14429003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14400
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
palfia@homejinni.com [Wed, 24 Apr 2013 00:58:48 +0000 (00:58 +0000)]
MIPS: Disallow dereferencing deferred handles when generating optimized code.
Port r14388 (
6843e0c9), r14389 (
331ea32d) and r14390 (
c8528d1c)
BUG=
Review URL: https://codereview.chromium.org/
14305011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14399
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dslomov@chromium.org [Tue, 23 Apr 2013 17:02:09 +0000 (17:02 +0000)]
Adds EXTERNAL_DOUBLE_ARRAY to a list of instance types
BUG=v8:2646
Patch by Andrei Kashcha <anvaka@gmail.com>
Review URL: https://codereview.chromium.org/
14042008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14398
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Tue, 23 Apr 2013 16:30:51 +0000 (16:30 +0000)]
Expose the GC under a name that is less collision prone than window.gc.
This also keeps backwards compatibility (window.gc() still works).
BUG=2641
Review URL: https://codereview.chromium.org/
14075012
Patch from Marja Hölttä <marja@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14397
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ulan@chromium.org [Tue, 23 Apr 2013 15:28:44 +0000 (15:28 +0000)]
Do not emit Simulates in HandlePolymorphicElementAccess.
BUG=v8:2653
R=jkummerow@chromium.org
TEST=mjsunit/regress/regress-2653.js
Review URL: https://chromiumcodereview.appspot.com/
14081025
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14396
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ulan@chromium.org [Tue, 23 Apr 2013 15:21:11 +0000 (15:21 +0000)]
Add a flag to deoptimize all functions every n garbage collections.
R=mstarzinger@chromium.org
Review URL: https://chromiumcodereview.appspot.com/
14091013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14395
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
svenpanne@chromium.org [Tue, 23 Apr 2013 13:08:10 +0000 (13:08 +0000)]
Do not emit double values at their use sites.
Revert part of r14179. From the regression test's comment:
Currently, the gap resolver doesn't handle moves from a ConstantOperand to a
DoubleRegister, but these kind of moves appeared when HConstant::EmitAtUses
was changed to allow special double values (-0, NaN, hole). So we should
either enhance the gap resolver or make sure that such moves don't happen.
BUG=chrome:234101
Review URL: https://codereview.chromium.org/
14429002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14394
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Tue, 23 Apr 2013 12:48:59 +0000 (12:48 +0000)]
Make it clear that GCMole depends on Clang 2.9 currently.
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/
13950017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14393
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Tue, 23 Apr 2013 10:52:40 +0000 (10:52 +0000)]
Fix ugly typo in r14391.
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/
14425006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14392
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Tue, 23 Apr 2013 10:41:55 +0000 (10:41 +0000)]
Switch GYP script to not use utils.py anymore.
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/
14108010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14391
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Tue, 23 Apr 2013 10:40:52 +0000 (10:40 +0000)]
Fix typo.
R=mvstanton@chromium.org
BUG=
Review URL: https://chromiumcodereview.appspot.com/
14425005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14390
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Tue, 23 Apr 2013 09:40:49 +0000 (09:40 +0000)]
Fix clang build.
R=mvstanton@chromium.org
BUG=
Review URL: https://chromiumcodereview.appspot.com/
14091011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14389
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Tue, 23 Apr 2013 09:23:07 +0000 (09:23 +0000)]
Disallow dereferencing deferred handles when generating optimized code.
R=mvstanton@chromium.org
BUG=
Review URL: https://chromiumcodereview.appspot.com/
14403015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14388
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Tue, 23 Apr 2013 08:58:23 +0000 (08:58 +0000)]
Change deprecated comments that still talk about SCons.
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/
14404012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14387
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yurys@chromium.org [Tue, 23 Apr 2013 07:26:30 +0000 (07:26 +0000)]
Print ProfileNode id when dumping CPU profile to console
Node ids are monotonically increasing and looking at them we can
say e.g. when the node was added before another one. We need this
to diagnose sporadic failures of cctest/test-cpu-profiler/CollectCpuProfile
BUG=v8:2628
Review URL: https://codereview.chromium.org/
14402014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14386
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
svenpanne@chromium.org [Tue, 23 Apr 2013 07:24:08 +0000 (07:24 +0000)]
Remove the executable bit from scanner.cc file.
Patch from Thiago Farina <tfarina@chromium.org>.
TBR=yangguo@chromium.org
Review URL: https://codereview.chromium.org/
14081021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14385
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
palfia@homejinni.com [Mon, 22 Apr 2013 22:46:51 +0000 (22:46 +0000)]
MIPS: ARM: Fix erroneous detection of Double result type in Integer32 BinaryOpStubs
Port r14371 (
b5c4a990)
BUG=
Review URL: https://codereview.chromium.org/
13973013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14384
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
palfia@homejinni.com [Mon, 22 Apr 2013 22:45:34 +0000 (22:45 +0000)]
MIPS: Improvements in lithium code generation. Recognizing if some operands are constants, we can often save on registers and instructions.
Port r14364 (
2819e5ee)
BUG=
Review URL: https://codereview.chromium.org/
14159015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14383
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
rodolph.perfetta@gmail.com [Mon, 22 Apr 2013 21:30:57 +0000 (21:30 +0000)]
ARM: VFP cleanup now that VFP2 is the baseline.
BUG=none
TEST=none
Review URL: https://chromiumcodereview.appspot.com/
14119008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14382
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Mon, 22 Apr 2013 16:31:16 +0000 (16:31 +0000)]
Ignore observed Double output in binary operations when all uses are truncating to Integer32
BUG=v8:2424
Review URL: https://codereview.chromium.org/
14320021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14381
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mvstanton@chromium.org [Mon, 22 Apr 2013 15:35:23 +0000 (15:35 +0000)]
Fixed issue in StoreNamedField codegen where integer32 constants were not converted to a smi.
BUG=
Review URL: https://codereview.chromium.org/
14075014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14380
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Mon, 22 Apr 2013 15:20:28 +0000 (15:20 +0000)]
create uniform string api
R=yangguo@chromium.org
BUG=
Review URL: https://chromiumcodereview.appspot.com/
12426015
Patch from Dan Carney <dcarney@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14379
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Mon, 22 Apr 2013 15:01:45 +0000 (15:01 +0000)]
Add methods to allow resuming execution after calling TerminateExecution().
R=mvstanton@chromium.org
BUG=v8:2361
Review URL: https://chromiumcodereview.appspot.com/
14401008
Patch from Andrew Paprocki <andrew@ishiboo.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14378
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
verwaest@chromium.org [Mon, 22 Apr 2013 14:46:55 +0000 (14:46 +0000)]
Ensure callbacks transitions are actually followed.
Review URL: https://chromiumcodereview.appspot.com/
14371007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14377
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Mon, 22 Apr 2013 14:38:07 +0000 (14:38 +0000)]
Disable ParserSync test in GC stress mode for now.
R=jkummerow@chromium.org
TEST=cctest/test-parsing/ParserSync
Review URL: https://codereview.chromium.org/
14075017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14376
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Mon, 22 Apr 2013 13:32:40 +0000 (13:32 +0000)]
Fix outdated build/README.txt
BUG=v8:2649
Review URL: https://codereview.chromium.org/
13911011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14375
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Mon, 22 Apr 2013 12:49:08 +0000 (12:49 +0000)]
Make Clang plugins directory configurable for GCMole.
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/
13956027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14374
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
rossberg@chromium.org [Mon, 22 Apr 2013 11:29:52 +0000 (11:29 +0000)]
Add d8 functionality for switching between realms (a.k.a. contexts), 2nd try
The only difference to the previous implementation (https://codereview.chromium.org/
14295011/) is in patch set 2.
R=yangguo@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
14404005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14373
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Mon, 22 Apr 2013 11:15:43 +0000 (11:15 +0000)]
Replace CheckBuilder with IfBuilder everywhere.
This deprecates and removes the CheckBuilder which is less powerful
than the generic IfBuilder which can deopt as well by now.
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/
14075013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14372
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Mon, 22 Apr 2013 10:56:37 +0000 (10:56 +0000)]
ARM: Fix erroneous detection of Double result type in Integer32 BinaryOpStubs
BUG=v8:2648
Review URL: https://codereview.chromium.org/
14178013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14371
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
svenpanne@chromium.org [Mon, 22 Apr 2013 09:48:35 +0000 (09:48 +0000)]
Various improvements regarding the way we print code code comments.
* All Lithium instructions have an associated Hydrogen instruction now,
simplifying things.
* Consistently print <Lithium instruction number,Hydrogen value id> prefixes.
* Do not print uninteresting Lithium instructions like empty gaps, jumps to the
next instruction, etc.
* Removed special handling of HChange-like instructions, it is totally unclear
why they had this special treatment. If we really want to print more
information about Lithium instructions, we should do it in a totally way,
anyway (e.g. by unifying things with the generation of hydrogen*.cfg files).
* Made deferred code and the jump table stand out a little bit more.
* Print info about special blocks like loop headers and OSR entries.
Review URL: https://codereview.chromium.org/
14371005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14370
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ulan@chromium.org [Mon, 22 Apr 2013 09:42:45 +0000 (09:42 +0000)]
Prepare push to trunk. Now working on version 3.18.3.
R=jkummerow@chromium.org
Review URL: https://chromiumcodereview.appspot.com/
14403005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14367
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Mon, 22 Apr 2013 08:46:02 +0000 (08:46 +0000)]
Skip one generators test because of no-snap failures.
R=rossberg@chromium.org
BUG=v8:2355
TEST=mjsunit/harmony/generators-objects
Review URL: https://codereview.chromium.org/
13956023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14366
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
verwaest@chromium.org [Mon, 22 Apr 2013 08:00:28 +0000 (08:00 +0000)]
Infer smi-range for smi-typed values.
Review URL: https://chromiumcodereview.appspot.com/
14192034
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14365
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mvstanton@chromium.org [Mon, 22 Apr 2013 07:47:25 +0000 (07:47 +0000)]
Improvements in lithium code generation. Recognizing if some operands are constants, we can often save on registers and instructions.
BUG=
Review URL: https://codereview.chromium.org/
14022011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14364
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
palfia@homejinni.com [Fri, 19 Apr 2013 19:23:03 +0000 (19:23 +0000)]
MIPS: Generator objects can suspend
Port r14353 (
f4bb81d1)
Original commit message:
* src/ast.h:
* src/parser.cc: Differentiate between the different kinds of yields, in
anticipation of boxing return values. Parse `return' into `yield' in
a generator.
* src/runtime.h:
* src/runtime.cc (Runtime_SuspendJSGeneratorObject): New horrible
runtime function: saves continuation, context, and operands into the
generator object.
* src/arm/full-codegen-arm.cc (VisitYield):
* src/ia32/full-codegen-ia32.cc (VisitYield):
* src/x64/full-codegen-x64.cc (VisitYield): Arrange to call
SuspendJSGeneratorObject. If the call returns the hole, we suspend.
Otherwise we resume.
BUG=v8:2355
TEST=These codepaths are tested when the generator is first invoked, and so
are covered by mjsunit/harmony/generators-objects.js.
Review URL: https://codereview.chromium.org/
14091006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14363
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
titzer@chromium.org [Fri, 19 Apr 2013 16:46:13 +0000 (16:46 +0000)]
Refactor HCheckMaps to have a private constructor, removing duplicated code and simplifying calls in clients.
Ignore bsuite directory.
Review URL: https://codereview.chromium.org/
14367023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14362
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Fri, 19 Apr 2013 16:38:19 +0000 (16:38 +0000)]
OS::MemMove/OS::MemCopy: Don't call through to generated code when size == 0 to avoid prefetching invalid memory
BUG=chromium:233500
Review URL: https://codereview.chromium.org/
14365011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14361
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Fri, 19 Apr 2013 16:21:09 +0000 (16:21 +0000)]
Switch elements access to use IfBuilder instead of CheckBuilder.
R=danno@chromium.org
Review URL: https://codereview.chromium.org/
14365014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14360
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mvstanton@chromium.org [Fri, 19 Apr 2013 16:01:57 +0000 (16:01 +0000)]
RecordWriteStubs on ARM need to save FP registers
A previous change erroneously stopped saving fp registers for write stubs in
snapshotted code. This CL restores correct behavior, and makes sure code that
saves fp registers checks at runtime for 16 or 32 fp registers. Also fix a bug
in the arm simulator debugger.
BUG=
Review URL: https://codereview.chromium.org/
14246032
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14359
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ulan@chromium.org [Fri, 19 Apr 2013 15:55:34 +0000 (15:55 +0000)]
Propagate OOM exception instead of crashing in CALL_HEAP_FUNCTION_PASS_EXCEPTION macro.
R=jkummerow@chromium.org
BUG=webkit/fast/js/concat-large-strings-crash.html
Review URL: https://chromiumcodereview.appspot.com/
14365017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14358
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Fri, 19 Apr 2013 15:50:01 +0000 (15:50 +0000)]
Fix build failures on Win64 since r14354.
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/
14246034
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14357
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
alph@chromium.org [Fri, 19 Apr 2013 15:42:52 +0000 (15:42 +0000)]
Remove heap snapshot size limit.
As long as frontend now stores snapshots in external arrays
it doesn't make sense to check the collected snapshot size on the
backend side. In other words if backend has managed to fit the
collected snapshot into its memory, it should also fit into the
frontend's memory.
R=yurys@chromium.org
BUG=chromium:232305
Review URL: https://codereview.chromium.org/
14246029
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14356
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
danno@chromium.org [Fri, 19 Apr 2013 14:22:38 +0000 (14:22 +0000)]
Update arm and mips simulator to also use cmath
Review URL: https://codereview.chromium.org/
14241029
Patch from Jochen Eisinger <jochen@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14355
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
danno@chromium.org [Fri, 19 Apr 2013 14:20:36 +0000 (14:20 +0000)]
Update tests to use std::isnan instead of isnan
Should fix compilation breakage after r14352
Review URL: https://codereview.chromium.org/
14328044
Patch from Jochen Eisinger <jochen@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14354
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Fri, 19 Apr 2013 14:11:23 +0000 (14:11 +0000)]
Generator objects can suspend
* src/ast.h:
* src/parser.cc: Differentiate between the different kinds of yields, in
anticipation of boxing return values. Parse `return' into `yield' in
a generator.
* src/runtime.h:
* src/runtime.cc (Runtime_SuspendJSGeneratorObject): New horrible
runtime function: saves continuation, context, and operands into the
generator object.
* src/arm/full-codegen-arm.cc (VisitYield):
* src/ia32/full-codegen-ia32.cc (VisitYield):
* src/x64/full-codegen-x64.cc (VisitYield): Arrange to call
SuspendJSGeneratorObject. If the call returns the hole, we suspend.
Otherwise we resume.
BUG=v8:2355
TEST=These codepaths are tested when the generator is first invoked, and so
are covered by mjsunit/harmony/generators-objects.js.
Review URL: https://codereview.chromium.org/
13704010
Patch from Andy Wingo <wingo@igalia.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14353
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00