yangguo@chromium.org [Thu, 12 Sep 2013 09:47:02 +0000 (09:47 +0000)]
Unnecessay SSE2 check on x64
BUG=
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/
23619033
Patch from Weiliang Lin <weiliang.lin2@gmail.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16674
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Thu, 12 Sep 2013 09:09:39 +0000 (09:09 +0000)]
Refactoring PropertyCallbackInfo & FunctionCallbackInfo, step 1.
The goal is to unify PropertyCallbackInfo and FunctionCallbackInfo so that they
contain the same fields.
The field order will be:
holder
isolate
return value default value
return value
data
this
This step 1 reorders the PropertyCallbackInfo fields.
BUG=
R=dcarney@chromium.org, mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/
23620036
Patch from Marja Hölttä <marja@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16673
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
olivf@chromium.org [Thu, 12 Sep 2013 09:05:27 +0000 (09:05 +0000)]
Fix phis for non-sse2 double values
Since hydrogen will try to merge phi-inputs using registers, even if
the values are spilled, we cannot mark LGoto as double clobbering
instruction.
BUG=
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/
23068038
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16671
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bmeurer@chromium.org [Thu, 12 Sep 2013 08:57:10 +0000 (08:57 +0000)]
Reland "Deuglify V8_INLINE and V8_NOINLINE."
R=dslomov@chromium.org
Review URL: https://codereview.chromium.org/
23604054
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16669
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dslomov@chromium.org [Thu, 12 Sep 2013 08:52:29 +0000 (08:52 +0000)]
Prepare push to trunk. Now working on version 3.21.15.
R=machenbach@chromium.org
Review URL: https://codereview.chromium.org/
23653031
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16668
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
olivf@chromium.org [Thu, 12 Sep 2013 07:49:03 +0000 (07:49 +0000)]
Add a missing instruction to the ia32 disassembler.
BUG=
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/
23451024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16667
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
machenbach@chromium.org [Thu, 12 Sep 2013 07:39:44 +0000 (07:39 +0000)]
Revert "Increase test timeout on slow architectures."
This reverts commit
200c7cbdbc90ec2001ee4e0da7470cb508585e0d.
BUG=
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/
23475036
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16666
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
machenbach@chromium.org [Thu, 12 Sep 2013 07:38:37 +0000 (07:38 +0000)]
Mark flaky tests for arm.
Makes the whole test-api a non-tree-closer on arm.
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/
23961006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16665
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Wed, 11 Sep 2013 20:04:51 +0000 (20:04 +0000)]
Revert "Fix leftover usage of OS::Allocate()."
TBR=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/
23691049
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16664
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
adamk@chromium.org [Wed, 11 Sep 2013 20:03:54 +0000 (20:03 +0000)]
Add access check for observed objects
This change is mostly straightforward: for 'normal' sorts of change records,
simply don't deliver a changeRecord to a given observer callback if an access
the callback's Context is not allowed to "GET" or "HAS" changeRecord.name on
changeRecord.object, or if ACCESS_KEYS is disallowed.
For 'splice' records, the question of whether to hand it to an observer is trickier, since
there are multiple properties involved, and multiple types of possible information leakage.
Given that access-checked objects are very rare (only two in Blink, Window and Location),
and that they are not normally used as Arrays, it seems better to simply not emit any splice
records for such objects rather than spending lots of logic to attempt to avoid information
leakage for something that may never happen.
BUG=v8:2778
R=rossberg@chromium.org
Review URL: https://codereview.chromium.org/
22962009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16663
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Wed, 11 Sep 2013 18:30:01 +0000 (18:30 +0000)]
Revert r16648, r16641, r16638 and r16637.
Original descriptions were:
- "Refactor and cleanup VirtualMemory."
- "Fix typo."
- "Deuglify V8_INLINE and V8_NOINLINE."
- "Don't align size on allocation granularity for unaligned ReserveRegion calls."
Reasons for the revert are:
- Our mjsunit test suite slower by a factor of 5(!) in release mode.
- Flaky cctest/test-alloc/CodeRange on all architectures and platforms.
- Tankage of Sunspider by about 6% overall (unverified).
TBR=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/
23970004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16662
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Wed, 11 Sep 2013 16:27:41 +0000 (16:27 +0000)]
Revert "Unify computation of load stubs in stub cache."
TBR=verwaest@chromium.org
Review URL: https://codereview.chromium.org/
24095005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16661
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Wed, 11 Sep 2013 15:44:09 +0000 (15:44 +0000)]
Unify computation of load stubs in stub cache.
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/
23647011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16660
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Wed, 11 Sep 2013 15:16:56 +0000 (15:16 +0000)]
Revert "Use trampoline or handlified JSObject::SetLocalPropertyIgnoreAttributes".
This was reverted due to performance regressions on Sunspider and other
benchmarks due to double GCs caused by the trampoline.
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/
23435006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16659
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Wed, 11 Sep 2013 15:12:27 +0000 (15:12 +0000)]
Make handle dereference check more precise.
R=mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
23578022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16658
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
palfia@homejinni.com [Wed, 11 Sep 2013 14:36:27 +0000 (14:36 +0000)]
MIPS: remove most uses of Isolate::Current in arch specific files.
Port r16643 (b818da5)
BUG=
R=gergely@homejinni.com
Review URL: https://codereview.chromium.org/
24108002
Patch from Balazs Kilvady <kilvadyb@homejinni.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16657
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
palfia@homejinni.com [Wed, 11 Sep 2013 14:15:18 +0000 (14:15 +0000)]
MIPS: thread isolate for EntryHookTrampoline.
Port r16630 (e045054)
BUG=
R=gergely@homejinni.com
Review URL: https://codereview.chromium.org/
23503050
Patch from Balazs Kilvady <kilvadyb@homejinni.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16656
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Wed, 11 Sep 2013 13:42:57 +0000 (13:42 +0000)]
Revert "Handlify JSObject::AddProperty method" for performance.
TBR=verwaest@chromium.org
Review URL: https://codereview.chromium.org/
23464069
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16655
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mvstanton@chromium.org [Wed, 11 Sep 2013 13:39:11 +0000 (13:39 +0000)]
To diagnose chromium bug 284577, some additional CHECKS. TODOs are
added so these can be backed out once the cause of the bug is determined.
BUG=
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/
23936007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16654
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
verwaest@chromium.org [Wed, 11 Sep 2013 13:34:07 +0000 (13:34 +0000)]
Delete useless CompileStoreGlobal
StoreGlobal stubs are generated by Hydrogen now
BUG=
R=verwaest@chromium.org
Review URL: https://chromiumcodereview.appspot.com/
23881004
Patch from Weiliang Lin <weiliang.lin2@gmail.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16653
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Wed, 11 Sep 2013 13:00:27 +0000 (13:00 +0000)]
Add assertion to UniqueValueId constructor.
R=verwaest@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
23781006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16652
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
titzer@chromium.org [Wed, 11 Sep 2013 12:59:07 +0000 (12:59 +0000)]
Improve alias analysis for HConstants (and fix small snafu in MustAlias).
BUG=
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/
24107003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16651
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dslomov@chromium.org [Wed, 11 Sep 2013 12:54:28 +0000 (12:54 +0000)]
Clean-up v8::ArrayBuffer::Allocator interface
BUG=v8:2823
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/
23514050
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16650
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Wed, 11 Sep 2013 12:39:00 +0000 (12:39 +0000)]
Pass PC offset into runtime when compiling for OSR.
R=titzer@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
23842004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16649
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bmeurer@chromium.org [Wed, 11 Sep 2013 11:33:18 +0000 (11:33 +0000)]
Don't align size on allocation granularity for unaligned ReserveRegion calls.
Also add additional ASSERTs to help tracking the flaky
test-alloc/CodeRange in Windows.
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/
23542027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16648
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Wed, 11 Sep 2013 11:00:36 +0000 (11:00 +0000)]
Handlify JSObject::AddProperty method.
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/
23883007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16647
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dcarney@chromium.org [Wed, 11 Sep 2013 10:59:39 +0000 (10:59 +0000)]
thread isolate for logging calls
R=svenpanne@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
23710025
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16646
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
titzer@chromium.org [Wed, 11 Sep 2013 10:53:56 +0000 (10:53 +0000)]
Implement simplistic local alias analysis, which will be used in both check elimination and load elimination.
BUG=
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/
23516010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16645
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
rossberg@chromium.org [Wed, 11 Sep 2013 10:52:20 +0000 (10:52 +0000)]
performChange no longer takes a |receiver| argument.
The spec omits the receiver arg with the idea arrow functions with lexical |this| will obviate the need for it.
BUG=
R=rossberg@chromium.org
Review URL: https://codereview.chromium.org/
23727006
Patch from Rafael Weinstein <rafaelw@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16644
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dcarney@chromium.org [Wed, 11 Sep 2013 10:51:06 +0000 (10:51 +0000)]
remove most uses of Isolate::Current in arch specific files
R=svenpanne@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
24031003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16643
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Wed, 11 Sep 2013 10:46:49 +0000 (10:46 +0000)]
Use trampoline or handlified JSObject::SetLocalPropertyIgnoreAttributes.
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/
24093002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16642
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bmeurer@chromium.org [Wed, 11 Sep 2013 10:28:09 +0000 (10:28 +0000)]
Deuglify V8_INLINE and V8_NOINLINE.
R=dslomov@chromium.org
Review URL: https://codereview.chromium.org/
23494047
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16641
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bmeurer@chromium.org [Wed, 11 Sep 2013 09:37:37 +0000 (09:37 +0000)]
Fix leftover usage of OS::Allocate().
TBR=verwaest@chromium.org
Review URL: https://codereview.chromium.org/
23514048
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16640
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
titzer@chromium.org [Wed, 11 Sep 2013 08:58:38 +0000 (08:58 +0000)]
Remove dead strings from heap.h
BUG=
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/
23600023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16639
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bmeurer@chromium.org [Wed, 11 Sep 2013 08:56:33 +0000 (08:56 +0000)]
Fix typo.
TBR=verwaest@chromium.org
Review URL: https://codereview.chromium.org/
23710023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16638
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bmeurer@chromium.org [Wed, 11 Sep 2013 08:47:02 +0000 (08:47 +0000)]
Refactor and cleanup VirtualMemory.
Remove a lot of platform duplication, and simplify the virtual
memory implementation. Also improve readability by avoiding bool
parameters for executability (use a dedicated Executability type
instead).
Get rid of the Isolate::UncheckedCurrent() call in the platform
code, as part of the Isolate TLS cleanup.
Use a dedicated random number generator for the address
randomization, instead of messing with the per-isolate random
number generators.
TEST=cctest/test-virtual-memory
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/
23641009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16637
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dcarney@chromium.org [Wed, 11 Sep 2013 08:39:38 +0000 (08:39 +0000)]
some random isolate threading
R=svenpanne@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
23494046
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16636
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
hpayer@chromium.org [Wed, 11 Sep 2013 08:23:37 +0000 (08:23 +0000)]
Prepare push to trunk. Now working on version 3.21.14.
R=yangguo@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
23994004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16633
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dcarney@chromium.org [Wed, 11 Sep 2013 07:28:47 +0000 (07:28 +0000)]
remove ISOLATE
R=svenpanne@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
23480067
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16632
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dcarney@chromium.org [Wed, 11 Sep 2013 07:14:41 +0000 (07:14 +0000)]
move HEAP to /test
R=svenpanne@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
23468021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16631
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dcarney@chromium.org [Wed, 11 Sep 2013 06:56:47 +0000 (06:56 +0000)]
thread isolate for EntryHookTrampoline
R=svenpanne@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
23587019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16630
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
adamk@chromium.org [Tue, 10 Sep 2013 18:13:54 +0000 (18:13 +0000)]
This patch implements optimized objectInfo structure which manages the set of observers associated with an object and the changeRecord types which they accept.
Observation in the normal case (Object.observe, default accept types, one observer) now allocates fewer objects and unobservation no longer needs to scan and splice an InternalArray -- making the combined speed of observe/unobserve about 200% faster.
This patch implements the following optimizations:
-objectInfo is initially created without any connected objects or arrays. The first observer is referenced directly by objectInfo, and when a second observer is added, changeObservers converts to a mapping of callbackPriority->observer, which allows for constant time registration/de-registration.
-observer.accept and objectInfo.performing are conceptually the same data-structure. This is now directly represented as an abstract "TypeMap" which can later be optimized to be a smi in common cases, (e.g: https://codereview.chromium.org/
19269007/).
-objectInfo observers are only represented by an object with an accept typeMap if the set of accept types is non-default
R=rossberg@chromium.org
Review URL: https://codereview.chromium.org/
19541010
Patch from Rafael Weinstein <rafaelw@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16629
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
hpayer@chromium.org [Tue, 10 Sep 2013 17:29:39 +0000 (17:29 +0000)]
Check that AllocationMementos never get scavengend.
BUG=
R=mstarzinger@chromium.org, mvstanton@chromium.org
Review URL: https://codereview.chromium.org/
24052003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16628
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Tue, 10 Sep 2013 16:41:46 +0000 (16:41 +0000)]
a small fix: DependentCode contains check against related dependency group
BUG=
R=ulan@chromium.org, yangguo@chromium.org
Review URL: https://codereview.chromium.org/
23648009
Patch from Weiliang Lin <weiliang.lin2@gmail.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16627
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Tue, 10 Sep 2013 15:03:17 +0000 (15:03 +0000)]
Remove V8_WARN_UNUSED_RESULT for simple getters.
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/
23629031
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16624
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Tue, 10 Sep 2013 14:33:06 +0000 (14:33 +0000)]
Use raw-to-handle trampoline in [Get/Set]HiddenPropertiesHashTable.
R=danno@chromium.org
Review URL: https://codereview.chromium.org/
23629040
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16623
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dcarney@chromium.org [Tue, 10 Sep 2013 14:30:36 +0000 (14:30 +0000)]
Get rid of most uses of 'Temporary macro' HEAP
R=svenpanne@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
23708030
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16622
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dcarney@chromium.org [Tue, 10 Sep 2013 14:26:07 +0000 (14:26 +0000)]
thread isolate for DebugMessage
R=svenpanne@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
23904012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16621
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
rodolph.perfetta@gmail.com [Tue, 10 Sep 2013 13:50:26 +0000 (13:50 +0000)]
ARM: replace RegExpCEntryStub with DirectCEntryStub.
RegExpCEntryStub is therefore removed.
BUG=none
TEST=none
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/
23468015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16618
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bmeurer@chromium.org [Tue, 10 Sep 2013 13:39:53 +0000 (13:39 +0000)]
Fix clang C++11 compiler warning.
TBR=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/
23658034
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16617
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
olivf@chromium.org [Tue, 10 Sep 2013 13:28:21 +0000 (13:28 +0000)]
Revert TranscendentalCacheStub changes in r16615.
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/
23889013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16616
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
olivf@chromium.org [Tue, 10 Sep 2013 12:37:30 +0000 (12:37 +0000)]
Move ToInt conversions to the MacroAssembler for x64
+ Prevent truncating TaggedToI from bailing out.
(This is a port of r16464)
BUG=
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/
23938003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16615
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bmeurer@chromium.org [Tue, 10 Sep 2013 11:33:14 +0000 (11:33 +0000)]
Fix MSVC compiler warning after commit r16612.
TBR=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/
23534052
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16614
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
svenpanne@chromium.org [Tue, 10 Sep 2013 11:32:15 +0000 (11:32 +0000)]
Initialize forgotten Isolate member.
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/
23769008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16613
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bmeurer@chromium.org [Tue, 10 Sep 2013 11:13:55 +0000 (11:13 +0000)]
Introduce a RandonNumberGenerator class. Refactor the random/private_random uses in Isolate/Context.
The RandomNumberGenerator is a pseudorandom number generator
with 48-bit state. It is properly seeded using either
(1) the --random-seed if specified, or
(2) the entropy_source function if configured, or
(3) /dev/urandom if available, or
(4) falls back to Time and TimeTicks based seeding.
Each Isolate now contains a RandomNumberGenerator, which replaces
the previous private_random_seed.
Every native context still has its own random_seed. But this random
seed is now properly initialized during bootstrapping,
instead of on-demand initialization. This will allow us to cleanup
and speedup the HRandom implementation quite a lot (this is delayed
for a followup CL)!
Also stop messing with the system rand()/random(), which should
not be done from a library anyway! We probably re-seeded the
libc rand()/random() after the application (i.e. Chrome) already
seeded it (with better entropy than what we used).
Another followup CL will replace the use of the per-isolate
random number generator for the address randomization and
thereby get rid of the Isolate::UncheckedCurrent() usage in
the platform code.
TEST=cctest/test-random-number-generator,cctest/test-random
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/
23548024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16612
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
loislo@chromium.org [Tue, 10 Sep 2013 11:12:35 +0000 (11:12 +0000)]
HeapProfiler: very slow ~4min "take snapshot time" for 80MB gmail heap.
The reason of that is a number of cons strings in the app.
The app constructs a json string and as a result v8 heap has
a very long chain of cons strings.
Profiler counts all these strings as plain String objects and
assign the content of the strings as node names.
It required O(n^2) time and O(n^2) memory.
Solution: I introduced two new types, kConsString and kSliced string.
They do not use the content of the string for names. So the problem disappeared.
The heap profiler usability problem will be solved on Blink side.
BUG=285770
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/
23460027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16611
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
titzer@chromium.org [Tue, 10 Sep 2013 11:11:26 +0000 (11:11 +0000)]
Remove unused method HType::IsTagged().
BUG=
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/
24087004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16610
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Tue, 10 Sep 2013 11:09:22 +0000 (11:09 +0000)]
Fix concurrent osr.
InstallOptimizedCode aquires ownership on the compilation info and deletes
it on return, tearing down the attached zone. The OptimizingCompiler
object is a zone object allocated in just that zone, so it also gets
deleted. Effectively, InstallOptimizedCode cleans up when it's done, so
the OptimizingCompiler object it receives is invalidated afterwards.
R=titzer@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
23769007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16609
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
svenpanne@chromium.org [Tue, 10 Sep 2013 10:57:00 +0000 (10:57 +0000)]
Add a ResourceConstraint for the embedder to specify that V8 is running on a memory constrained device.
This enables us to specialize certain operations such that we limit memory
usage on low-memory devices, without reducing performance on devices which
are not memory constrained.
BUG=chromium:280984
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/
23464022
Patch from Ross McIlroy <rmcilroy@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16608
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
svenpanne@chromium.org [Tue, 10 Sep 2013 10:53:33 +0000 (10:53 +0000)]
Move Maybe template into v8.h so it can be used by SetResourceConstraints
BUG=
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/
23767009
Patch from Ross McIlroy <rmcilroy@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16607
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dcarney@chromium.org [Tue, 10 Sep 2013 09:24:53 +0000 (09:24 +0000)]
restore persistent dtor
R=svenpanne@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
23581010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16606
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
svenpanne@chromium.org [Tue, 10 Sep 2013 06:43:23 +0000 (06:43 +0000)]
Remove HandleScope default ctor.
BUG=chromium:236173
R=bmeurer@chromium.org, svenpanne@chromium.org
Review URL: https://codereview.chromium.org/
23530045
Patch from Marja Hölttä <marja@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16605
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bmeurer@chromium.org [Tue, 10 Sep 2013 05:54:15 +0000 (05:54 +0000)]
Use PAGE_NOACCESS for guard pages in Windows.
Up until now we used PAGE_GUARD for guard pages in Windows, which
will raise a STATUS_GUARD_PAGE_VIOLATION exception on first access
and grant regular access afterwards. This behavior is required to
implement automatic stack checking, or more generally to implement
applications that monitor the growth of large dynamic data structures.
However, this is not what we want for our guard pages, which are
used as a security mechanism. What we really want is PAGE_NOACCESS
here, which is the Windows-equivalent of PROT_NONE that we use on
all other platforms.
R=cdn@chromium.org
Review URL: https://codereview.chromium.org/
23458022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16604
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Mon, 9 Sep 2013 17:12:59 +0000 (17:12 +0000)]
Enable escape analysis for Hydrogen.
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/
23458036
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16601
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
olivf@chromium.org [Mon, 9 Sep 2013 16:57:35 +0000 (16:57 +0000)]
Extend assembler and codegen with more fpu arithmetic
BUG=
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/
21509003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16600
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
titzer@chromium.org [Mon, 9 Sep 2013 16:34:40 +0000 (16:34 +0000)]
Generate a custom OSR entrypoint for OSR compiles on all platforms, and transition to optimized code using the special entrypoint, instead of through the deoptimizer. Do not install the OSR compiled code as _the_ optimized code for a function.
Remove OSR-related stuff from deoptimizer.
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/
21340002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16599
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yangguo@chromium.org [Mon, 9 Sep 2013 16:15:40 +0000 (16:15 +0000)]
Correctly stringify mixed encoding indirect strings.
R=verwaest@chromium.org
BUG=287476
Review URL: https://codereview.chromium.org/
23480051
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16598
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dcarney@chromium.org [Mon, 9 Sep 2013 15:03:03 +0000 (15:03 +0000)]
put js accessor ics behind a flags until fixed
R=mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
23816009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16597
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
palfia@homejinni.com [Mon, 9 Sep 2013 15:02:41 +0000 (15:02 +0000)]
MIPS: thread isolate for HConstant::handle.
Port r16587 (45fc067)
BUG=
Review URL: https://codereview.chromium.org/
23444041
Patch from Balazs Kilvady <kilvadyb@homejinni.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16596
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Mon, 9 Sep 2013 14:29:47 +0000 (14:29 +0000)]
Handlify JSObject::EnsureCanContainHeapObjectElements method.
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/
23818005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16595
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dslomov@chromium.org [Mon, 9 Sep 2013 11:50:28 +0000 (11:50 +0000)]
Prepare push to trunk. Now working on version 3.21.13.
R=rossberg@chromium.org
Review URL: https://codereview.chromium.org/
23684035
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16592
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dcarney@chromium.org [Mon, 9 Sep 2013 10:26:25 +0000 (10:26 +0000)]
remove commented out code in v8.h
TBR=dslomov@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
23676007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16591
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dcarney@chromium.org [Mon, 9 Sep 2013 10:10:26 +0000 (10:10 +0000)]
temporarily remove persistent destructor to allow trunk push
TBR=dslomov@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
24023004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16590
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Mon, 9 Sep 2013 09:53:58 +0000 (09:53 +0000)]
Consider out-of-bounds accesses as escaping uses.
R=titzer@chromium.org
TEST=mjsunit/compiler/escape-analysis
Review URL: https://codereview.chromium.org/
23892007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16589
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dcarney@chromium.org [Mon, 9 Sep 2013 09:25:23 +0000 (09:25 +0000)]
new persistent semantics
adds copying and autodispose as traits
R=marja@chromium.org, mstarzinger@chromium.org, svenpanne@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
23401003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16588
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dcarney@chromium.org [Mon, 9 Sep 2013 07:57:23 +0000 (07:57 +0000)]
thread isolate for HConstant::handle
R=svenpanne@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
24027004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16587
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dcarney@chromium.org [Mon, 9 Sep 2013 07:52:52 +0000 (07:52 +0000)]
add uncached Function::New
TBR=mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
24071002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16586
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dcarney@chromium.org [Mon, 9 Sep 2013 07:16:24 +0000 (07:16 +0000)]
revert 16584 for breaking build
TBR=mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
23680014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16585
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dcarney@chromium.org [Mon, 9 Sep 2013 07:08:34 +0000 (07:08 +0000)]
add uncached Function::New
R=mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
23561007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16584
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bmeurer@chromium.org [Mon, 9 Sep 2013 05:44:54 +0000 (05:44 +0000)]
Replace uses of MUST_USE_RESULT by V8_WARN_UNUSED_RESULT in ElapsedTimer.
R=bmeurer@chromium.org
Signed-off-by: Thiago Farina <tfarina@chromium.org>
Review URL: https://codereview.chromium.org/
23523034
Patch from Thiago Farina <tfarina@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16583
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
machenbach@chromium.org [Sun, 8 Sep 2013 19:50:55 +0000 (19:50 +0000)]
Increase test timeout on slow architectures.
BUG=
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/
24037002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16582
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
prybin@chromium.org [Sun, 8 Sep 2013 19:05:29 +0000 (19:05 +0000)]
Debug: parameterize 'step over' action with a frame where the step must be performed
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/
23533015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16581
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
palfia@homejinni.com [Fri, 6 Sep 2013 17:21:27 +0000 (17:21 +0000)]
MIPS: store ics for js api accessors.
Port r16571 (9266312)
BUG=
Review URL: https://codereview.chromium.org/
23780003
Patch from Balazs Kilvady <kilvadyb@homejinni.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16580
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Fri, 6 Sep 2013 15:21:38 +0000 (15:21 +0000)]
Fix bitwise negation on x64
BUG=chromium:285355
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/
24037003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16579
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Fri, 6 Sep 2013 13:52:59 +0000 (13:52 +0000)]
Disable recently added failing InitializeAndDisposeOnce test.
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/
23542010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16578
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
svenpanne@chromium.org [Fri, 6 Sep 2013 13:18:26 +0000 (13:18 +0000)]
Some thread data simplifications.
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/
24036002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16577
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
rodolph.perfetta@gmail.com [Fri, 6 Sep 2013 13:12:46 +0000 (13:12 +0000)]
ARM: Improve integer multiplication.
TEST=test/mjsunit/lithium/MulI.js
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/
23452022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16576
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
verwaest@chromium.org [Fri, 6 Sep 2013 13:06:39 +0000 (13:06 +0000)]
Let BuildStore/BuildLoad distinguish between keyed/named load/stores.
R=bmeurer@chromium.org
Review URL: https://chromiumcodereview.appspot.com/
23537024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16575
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bmeurer@chromium.org [Fri, 6 Sep 2013 12:25:46 +0000 (12:25 +0000)]
It should break out while loop once page_has_scan_on_scavenge_flag is found, there is no need check all of the items in the list.
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/
23597017
Patch from Bangfu Tao <bangfu.tao@samsung.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16574
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
svenpanne@chromium.org [Fri, 6 Sep 2013 11:41:02 +0000 (11:41 +0000)]
Fixed 2 space leaks in CreateMemmoveFunction, finally making valgrind happy.
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/
23714007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16573
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
verwaest@chromium.org [Fri, 6 Sep 2013 11:32:46 +0000 (11:32 +0000)]
Properly filter types using the initial map from HAllocate.
R=mstarzinger@chromium.org
Review URL: https://chromiumcodereview.appspot.com/
23615012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16572
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
dcarney@chromium.org [Fri, 6 Sep 2013 11:31:25 +0000 (11:31 +0000)]
store ics for js api accessors
R=mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
23549019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16571
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bmeurer@chromium.org [Fri, 6 Sep 2013 11:29:13 +0000 (11:29 +0000)]
Drop GetCurrentThreadId() and TerminateExecution(int) from the external API.
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/
23538007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16570
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Fri, 6 Sep 2013 11:24:26 +0000 (11:24 +0000)]
Revert "Fix multiple V8::Dispose calls since r16563." and disable test.
TBR=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/
23522022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16569
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Fri, 6 Sep 2013 11:04:20 +0000 (11:04 +0000)]
Fix polymorphic INTERCEPTOR StoreICs on ARM/MIPS
BUG=chromium:284998
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/
23990004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16566
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Fri, 6 Sep 2013 11:02:43 +0000 (11:02 +0000)]
Fix multiple V8::Dispose calls since r16563.
R=svenpanne@chromium.org
BUG=v8:2744
TEST=cctest/test-api/InitializeAndDisposeMultiple
Review URL: https://codereview.chromium.org/
23775007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16565
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yurys@chromium.org [Fri, 6 Sep 2013 06:25:06 +0000 (06:25 +0000)]
Check if timeout has expired after processing each sample
To avoid long intervals between taking samples due to processing all accumulated samples at once, the samples are processed one by one and we check if the sampling interval has elapsed after each step rather than after processing all the samples in the queue.
This is a modified version of r16549 whith a fix for test flakiness. The test flakiness introduced by the previous version of this changed was fixed by changing return type of ProfilerEventsProcessor::ProcessOneSample from bool to enum with 3 options. In the main profiling loop we decide that the next code event should be processed when sample with a greater ordinal number is encountered. When processing remaining samples we shouldn't wait for more samples and if the samples queue is empty we just process next code event.
BUG=v8:2814,v8:2871
R=bmeurer@chromium.org, loislo@chromium.org
Review URL: https://codereview.chromium.org/
23455036
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16564
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Thu, 5 Sep 2013 18:53:39 +0000 (18:53 +0000)]
Remove obsolete global V8::has_been_fooed flags.
R=yangguo@chromium.org
BUG=v8:2744
TEST=cctest/test-api/InitializeAndDispose
Review URL: https://codereview.chromium.org/
23453030
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16563
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mstarzinger@chromium.org [Thu, 5 Sep 2013 18:41:20 +0000 (18:41 +0000)]
Consistently use CHECK_ALIVE_OR_RETURN in graph builder.
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/
23819026
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16562
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
jkummerow@chromium.org [Thu, 5 Sep 2013 16:29:07 +0000 (16:29 +0000)]
Prepare push to trunk. Now working on version 3.21.12.
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/
23519008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16559
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00