platform/upstream/v8.git
11 years agoMIPS: A debug code assert needed to be behind the new optimize_constructed_arrays...
mvstanton@chromium.org [Wed, 6 Mar 2013 12:25:42 +0000 (12:25 +0000)]
MIPS: A debug code assert needed to be behind the new optimize_constructed_arrays flag.

Port r13791 (fe11ffe7)

BUG=

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

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

11 years agoMIPS: Allocation Info Tracking, continued.
mvstanton@chromium.org [Wed, 6 Mar 2013 12:23:09 +0000 (12:23 +0000)]
MIPS: Allocation Info Tracking, continued.

Port r13790 (0a70a3af)

Original commit message:
Addresses missing cases for array literals.
Adds support for "new Array()" call sites. This isn't complete yet, I have to run with --noinline_new.

BUG=

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

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

11 years agoTrack Hydrogen statistics on a per-Isolate basis
svenpanne@chromium.org [Wed, 6 Mar 2013 10:49:34 +0000 (10:49 +0000)]
Track Hydrogen statistics on a per-Isolate basis

This is basically the same fix as the one for --trace-hydrogen, but now for
--hydrogen-stats. Removed a few train wrecks on the way.

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

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

11 years agoSeparate output files for --trace-hydrogen.
svenpanne@chromium.org [Wed, 6 Mar 2013 07:25:46 +0000 (07:25 +0000)]
Separate output files for --trace-hydrogen.

The output filenames have now the form "hydrogen-<ProcessId>-<IsolateId>.cfg".
Minor cleanup on the way.

Note that we have a similar bug regarding statistics, but this will be handled
in a separate CL.

BUG=v8:2563

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

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

11 years agoSplit and replace the EmitVFPTruncate routine to only do what is needed. Floor
rodolph.perfetta@gmail.com [Tue, 5 Mar 2013 19:35:59 +0000 (19:35 +0000)]
Split and replace the EmitVFPTruncate routine to only do what is needed. Floor
and Round have been rewritten to use the default rounding mode.

BUG=none
TEST=none

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

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

11 years agoPresweep one page before parallel/concurrent sweeping.
hpayer@chromium.org [Tue, 5 Mar 2013 17:51:49 +0000 (17:51 +0000)]
Presweep one page before parallel/concurrent sweeping.

BUG=

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

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

11 years agoMake IC patching resilient to flushing of the original target() ic.
verwaest@chromium.org [Tue, 5 Mar 2013 17:38:35 +0000 (17:38 +0000)]
Make IC patching resilient to flushing of the original target() ic.

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

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

11 years agoWait for sweeper threads in EnsureSweeperProgress() only if the main thread finished...
hpayer@chromium.org [Tue, 5 Mar 2013 17:32:02 +0000 (17:32 +0000)]
Wait for sweeper threads in EnsureSweeperProgress() only if the main thread finished its sweeping phase.

BUG=

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

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

11 years agoES6 symbols: enable symbols as weak map keys
rossberg@chromium.org [Tue, 5 Mar 2013 17:24:08 +0000 (17:24 +0000)]
ES6 symbols: enable symbols as weak map keys

R=mstarzinger@chromium.org
BUG=

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

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

11 years agoProperly handle misses for StoreArrayLengthStub on ia32 and x64
adamk@chromium.org [Tue, 5 Mar 2013 16:31:11 +0000 (16:31 +0000)]
Properly handle misses for StoreArrayLengthStub on ia32 and x64

Both failed to generate a miss if the key wasn't "length".
ARM and MIPS were already correct.

BUG=v8:2566

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

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

11 years agoDetails wrt parallel recompilation.
yangguo@chromium.org [Tue, 5 Mar 2013 16:22:08 +0000 (16:22 +0000)]
Details wrt parallel recompilation.

This includes:
- actually release handles kept by compilation info when compilation completes.
- do not use parallel recompilation on single core CPUs.
- artificially delay parallel recompilation for debugging.
- fix outdated assertions wrt optimization status.
- add "parallel" option to %OptimizeFunctionOnNextCall.

R=jkummerow@chromium.org
BUG=

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

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

11 years agoRemove obsolete CodeFlusher debug code.
mstarzinger@chromium.org [Tue, 5 Mar 2013 16:08:11 +0000 (16:08 +0000)]
Remove obsolete CodeFlusher debug code.

R=hpayer@chromium.org

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

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

11 years agoPrint whether a HCheckPrototypeMaps is omitted.
mstarzinger@chromium.org [Tue, 5 Mar 2013 14:11:56 +0000 (14:11 +0000)]
Print whether a HCheckPrototypeMaps is omitted.

R=jkummerow@chromium.org

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

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

11 years agofix x32 handling of Atomic64
svenpanne@chromium.org [Tue, 5 Mar 2013 13:54:03 +0000 (13:54 +0000)]
fix x32 handling of Atomic64

The x32 logic for the size of Atomic64 handles NaCL, but misses
the Linux case.  Check the standard __ILP32__ to handle that too.

This has been fixed in the Chromium base tree already:
https://codereview.chromium.org/12186005/

BUG=chromium-os:36866
TEST=compiled the code for x86_64 (64bit) & x86_64 (x32)

Review URL: https://codereview.chromium.org/12374065
Patch from Mike Frysinger <vapier@chromium.org>.

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

11 years agoCleaned up CpuFeature scope handling.
svenpanne@chromium.org [Tue, 5 Mar 2013 10:48:16 +0000 (10:48 +0000)]
Cleaned up CpuFeature scope handling.

First of all, it has nothing to do with Isolates, it is related to the assembler
at hand. Furthermore, the saving/restoring is platform-independent. Cleaned up
some platform-specific stuff on the way.

Note that there are some things which still need some cleanup, like e.g. using
EnumSet instead of uint64_t, making Probe() more uniform across platforms etc.,
but the CL is already big enough.

BUG=v8:2487

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

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

11 years agoLinux: for use_system_v8=1, use all_dependent_settings
jkummerow@chromium.org [Tue, 5 Mar 2013 09:49:54 +0000 (09:49 +0000)]
Linux: for use_system_v8=1, use all_dependent_settings

instead of direct_dependent_settings - with V8 headers
being included in other headers, the former works much better.

This is a configuration that is not used for Google Chrome
neither V8 buildbot, and has been tested for its intended
use case (Linux distributions).

BUG=none

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

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

11 years agoRemove "library" variable from standalone.gypi.
jkummerow@chromium.org [Tue, 5 Mar 2013 09:28:48 +0000 (09:28 +0000)]
Remove "library" variable from standalone.gypi.

BUG=111541
R=jkummerow@chromium.org

Signed-off-by: Thiago Farina <tfarina@chromium.org>
Review URL: https://codereview.chromium.org/12379082
Patch from Thiago Farina <tfarina@chromium.org>.

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

11 years agoFixed HCheckSmiOrInt <-> HBoundsCheck interaction wrt. representations
jkummerow@chromium.org [Tue, 5 Mar 2013 09:14:28 +0000 (09:14 +0000)]
Fixed HCheckSmiOrInt <-> HBoundsCheck interaction wrt. representations

BUG=v8:2556

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

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

11 years agoImprove integer division on ARM in favor of power of 2 constant divisor
ulan@chromium.org [Tue, 5 Mar 2013 08:47:59 +0000 (08:47 +0000)]
Improve integer division on ARM in favor of power of 2 constant divisor
BUG=none
TEST=none

Review URL: https://chromiumcodereview.appspot.com/12052032
Patch from Rajeev R Krithivasan <rkrithiv@codeaurora.org>.

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

11 years agoEnable zapping of disposed global handles in release mode.
mstarzinger@chromium.org [Mon, 4 Mar 2013 18:24:37 +0000 (18:24 +0000)]
Enable zapping of disposed global handles in release mode.

R=hpayer@chromium.org
BUG=chromium:176056

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

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

11 years agoAdd workaround for redefinition of __proto__ property.
mstarzinger@chromium.org [Mon, 4 Mar 2013 17:53:40 +0000 (17:53 +0000)]
Add workaround for redefinition of __proto__ property.

This is a temporary workaround when the __proto__ property is being
redefined (e.g. by Object.freeze()) to not loose the foreign callback.
Once the __proto__ property is a real JavaScript accessor this hack is
no longer necessary. This change also makes __proto__ configurable.

R=rossberg@chromium.org
BUG=v8:2565
TEST=mjsunit/regress/regress-2565

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

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

11 years agoAlso fix cast warnings on Win64
rossberg@chromium.org [Mon, 4 Mar 2013 16:12:26 +0000 (16:12 +0000)]
Also fix cast warnings on Win64

R=mstarzinger@chromium.org
BUG=

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

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

11 years agoMake sure builtin functions don't rely on __proto__.
mstarzinger@chromium.org [Mon, 4 Mar 2013 16:05:12 +0000 (16:05 +0000)]
Make sure builtin functions don't rely on __proto__.

This makes sure that none of the builtin functions rely on the __proto__
accessor which can now be monkey-patched by applications. Instead use a
separate %SetPrototype() intrinsic or object literals to do the job.

R=rossberg@chromium.org

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

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

11 years agoFix assert in PagedSpace::SizeOfObject for concurrent sweeping.
hpayer@chromium.org [Mon, 4 Mar 2013 15:47:59 +0000 (15:47 +0000)]
Fix assert in PagedSpace::SizeOfObject for concurrent sweeping.

BUG=

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

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

11 years agoFix one more cast warning on Win32
rossberg@chromium.org [Mon, 4 Mar 2013 15:25:33 +0000 (15:25 +0000)]
Fix one more cast warning on Win32

R=mstarzinger@chromium.org
BUG=

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

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

11 years agoFix cast warnings on Win32
rossberg@chromium.org [Mon, 4 Mar 2013 15:15:37 +0000 (15:15 +0000)]
Fix cast warnings on Win32

R=mstarzinger@chromium.org
BUG=

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

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

11 years agoES6 symbols: Allow symbols as property names
rossberg@chromium.org [Mon, 4 Mar 2013 15:00:57 +0000 (15:00 +0000)]
ES6 symbols: Allow symbols as property names

Since symbols and strings share a common representation, most of this change is about consistently replacing 'String' with 'Name' in all places where property names are expected. In particular, no new logic at all is necessary for maps, property dictionaries, or transitions. :) The only places where an actual case distinction is needed have to do with generated type checks, and with conversions of names to strings (especially in logger and profiler).

Left in some TODOs wrt to the API: interceptors and native getters don't accept symbols as property names yet, because that would require extending the external v8.h.

(Baseline CL: https://codereview.chromium.org/12296026/)

R=verwaest@chromium.org,mstarzinger@chromium.org
BUG=v8:2158

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

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

11 years agoWait for sweeper threads and finalize sweeping only if parallel/concurrent sweeping...
hpayer@chromium.org [Mon, 4 Mar 2013 14:56:20 +0000 (14:56 +0000)]
Wait for sweeper threads and finalize sweeping only if parallel/concurrent sweeping was in progress.

BUG=

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

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

11 years agoMIPS: Renamed "symbols" to "internalized strings" throughout the code base, in prepar...
palfia@homejinni.com [Mon, 4 Mar 2013 14:45:39 +0000 (14:45 +0000)]
MIPS: Renamed "symbols" to "internalized strings" throughout the code base, in preparation of the introduction of ES6 'symbols' (aka private/unique names).

Port r13781 (59f39a06)

Original commit message:
The SymbolTable became the StringTable. I also made sure to adapt all comments. The only remaining use of the term "symbol" (other than unrelated uses in the parser and such) is now 'NewSymbol' in the API and the 'V8.KeyedLoadGenericSymbol' counter, changing which might break embedders.

The one functional change in this CL is that I removed the former 'empty_string' constant, since it is redundant given the 'empty_symbol' constant that we also had (and both were used inconsistently).

BUG=

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

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

11 years agoPrepare push to trunk. Now working on version 3.17.8.
yangguo@chromium.org [Mon, 4 Mar 2013 14:44:23 +0000 (14:44 +0000)]
Prepare push to trunk.  Now working on version 3.17.8.

R=mstarzinger@chromium.org
BUG=

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

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

11 years agoMIPS: Minor cleanup of CompareIC state
palfia@homejinni.com [Mon, 4 Mar 2013 14:41:39 +0000 (14:41 +0000)]
MIPS: Minor cleanup of CompareIC state

Port r13775 (1fd19d83)

Original commit message:
Allow transitioning from KNOWN_OBJECT to KNONW_OBJECT or OBJECT.
Also, rename HEAP_NUMBER IC states to NUMBER, since they handle Smis, too.

BUG=

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

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

11 years agoMIPS: Currently this mostly just moves code around.
palfia@homejinni.com [Mon, 4 Mar 2013 14:29:40 +0000 (14:29 +0000)]
MIPS: Currently this mostly just moves code around.

Port r13768 (4996bcd0)

Original commit message:
- Later the different parts will become individual code objects that tailcall into one another.
- The mapcheck/symbol check still needs to be separated from the overall prototype-chain check so that the ICs can reuse the handlers.

BUG=

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

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

11 years agoMIPS: Fix materialization of arguments objects with unknown values.
palfia@homejinni.com [Mon, 4 Mar 2013 14:26:30 +0000 (14:26 +0000)]
MIPS: Fix materialization of arguments objects with unknown values.

Port r13763 (6b32e7d6)

Original commit message:
This fixes the deoptimizer to materialize arguments objects of correct
length even in cases where the actual argument values are unknown and
were optimized away by Crankshaft. This can happen if only the length
property or the identity of an arguments object is used.

BUG=

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

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

11 years agoMIPS: Compile FastCloneShallowObjectStub using Crankshaft.
palfia@homejinni.com [Mon, 4 Mar 2013 14:23:30 +0000 (14:23 +0000)]
MIPS: Compile FastCloneShallowObjectStub using Crankshaft.

Port r13732 (686b0a45)

Original commit message:
This changes FastCloneShallowObjectStub to be compiled independent of
the target architecture. It also adds tracing to the deoptimizer for
compiled stubs and contains some minor bugfixes.

BUG=

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

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

11 years agoPolymorphism support for load IC.
verwaest@chromium.org [Mon, 4 Mar 2013 14:03:27 +0000 (14:03 +0000)]
Polymorphism support for load IC.

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

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

11 years agoMIPS: Refactor RegExpStub to check lazily.
palfia@homejinni.com [Mon, 4 Mar 2013 13:15:16 +0000 (13:15 +0000)]
MIPS: Refactor RegExpStub to check lazily.

Port r13727 (55a760ec)

BUG=

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

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

11 years agoBugfix: allow handle dereference only when we have a valid hydrogen graph or lithium...
mvstanton@chromium.org [Mon, 4 Mar 2013 12:34:49 +0000 (12:34 +0000)]
Bugfix: allow handle dereference only when we have a valid hydrogen graph or lithium chunk.

BUG=

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

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

11 years agoTweak register allocation for Math.round and do not use roundsd.
yangguo@chromium.org [Mon, 4 Mar 2013 08:44:42 +0000 (08:44 +0000)]
Tweak register allocation for Math.round and do not use roundsd.

R=svenpanne@chromium.org
BUG=

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

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

11 years agoA debug code assert needed to be behind the new optimize_constructed_arrays flag.
mvstanton@chromium.org [Fri, 1 Mar 2013 16:59:53 +0000 (16:59 +0000)]
A debug code assert needed to be behind the new optimize_constructed_arrays flag.

BUG=

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

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

11 years agoAllocation Info Tracking, continued.
mvstanton@chromium.org [Fri, 1 Mar 2013 16:06:34 +0000 (16:06 +0000)]
Allocation Info Tracking, continued.

Addresses missing cases for array literals.
Adds support for "new Array()" call sites. This isn't complete yet, I have to run with --noinline_new.

BUG=

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

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

11 years agoHandle dereferencing needs to be allowed for printing during optimization phase.
mvstanton@chromium.org [Fri, 1 Mar 2013 15:50:57 +0000 (15:50 +0000)]
Handle dereferencing needs to be allowed for printing during optimization phase.

BUG=

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

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

11 years agoLimit EatAtLeast recursion by a budget.
yangguo@chromium.org [Fri, 1 Mar 2013 14:50:14 +0000 (14:50 +0000)]
Limit EatAtLeast recursion by a budget.

BUG=178790

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

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

11 years agoFix cast warning on Win32
rossberg@chromium.org [Fri, 1 Mar 2013 14:31:01 +0000 (14:31 +0000)]
Fix cast warning on Win32

R=mstarzinger@chromium.org
BUG=

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

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

11 years agoES6 symbols: Implement Symbol intrinsic and basic functionality
rossberg@chromium.org [Fri, 1 Mar 2013 13:28:55 +0000 (13:28 +0000)]
ES6 symbols: Implement Symbol intrinsic and basic functionality

- Add --harmony-symbols flag.
- Add Symbol constructor; allow symbols as (unreplaced) return value from constructors.
- Introduce %CreateSymbol and %_IsSymbol natives and respective instructions.
- Extend 'typeof' code generation to handle symbols.
- Extend CompareIC with a UNIQUE_NAMES state that (uniformly) handles internalized strings and symbols.
- Property lookup delegates to SymbolDelegate object for symbols, which only carries the toString method.
- Extend Object.prototype.toString to recognise symbols.

Per the current draft spec, symbols are actually pseudo objects that are frozen with a null prototype and only one property (toString). For simplicity, we do not treat them as proper objects for now, although typeof will return "object". Only property access works as if they were (frozen) objects (via the internal delegate object).

(Baseline CL: https://codereview.chromium.org/12223071/)

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

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

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

11 years agoFix Win64 compilation problem.
hpayer@chromium.org [Fri, 1 Mar 2013 12:46:20 +0000 (12:46 +0000)]
Fix Win64 compilation problem.

BUG=

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

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

11 years agoUnify deoptimizer for accessor and arguments frames.
mstarzinger@chromium.org [Fri, 1 Mar 2013 12:23:24 +0000 (12:23 +0000)]
Unify deoptimizer for accessor and arguments frames.

This unifies the translation of artificial accessor stub and arguments
adaptor frames. The frame layout is the same on all architectures and
the computation code can be shared.

R=svenpanne@chromium.org

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

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

11 years agoES6 symbols: Introduce Symbol class, along with abstract Name class
rossberg@chromium.org [Fri, 1 Mar 2013 10:34:31 +0000 (10:34 +0000)]
ES6 symbols: Introduce Symbol class, along with abstract Name class

The new instance type 'Symbol' represents ES6 symbols (a.k.a. private/unique names). Currently, symbols are simple data objects that only carry a hash code, random-generated upon allocation.

The new type 'Name' now serves as the common super class for strings and symbols, and is supposed to represent property names. We will eventually migrate APIs from String to Name for the standard key type.

Strings and symbols share the same hash field representation, via the Name class. This way, we should be able to use the same code paths for symbols and internalized strings in most cases. Also, Symbol's instance type code is allocated adjacent to internalized string codes in the enum, allowing a simple range check for the common case.

Baseline CL: https://codereview.chromium.org/12210083/

R=mstarzinger@chromium.org
BUG=

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

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

11 years agoSimplify line editor choice in d8.
yangguo@chromium.org [Thu, 28 Feb 2013 17:40:24 +0000 (17:40 +0000)]
Simplify line editor choice in d8.

R=rossberg@chromium.org
BUG=

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

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

11 years agoRenamed "symbols" to "internalized strings" throughout the code base,
rossberg@chromium.org [Thu, 28 Feb 2013 17:03:34 +0000 (17:03 +0000)]
Renamed "symbols" to "internalized strings" throughout the code base,
in preparation of the introduction of ES6 'symbols' (aka private/unique names).

The SymbolTable became the StringTable. I also made sure to adapt all comments. The only remaining use of the term "symbol" (other than unrelated uses in the parser and such) is now 'NewSymbol' in the API and the 'V8.KeyedLoadGenericSymbol' counter, changing which might break embedders.

The one functional change in this CL is that I removed the former 'empty_string' constant, since it is redundant given the 'empty_symbol' constant that we also had (and both were used inconsistently).

R=yangguo@chromium.org
BUG=

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

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

11 years agoPrepare push to trunk. Now working on version 3.17.7.
hpayer@chromium.org [Thu, 28 Feb 2013 15:53:29 +0000 (15:53 +0000)]
Prepare push to trunk.  Now working on version 3.17.7.

R=mstarzinger@chromium.org

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

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

11 years agoTurn off parallel and concurrent sweeping on system with just one processor/core.
hpayer@chromium.org [Thu, 28 Feb 2013 15:18:15 +0000 (15:18 +0000)]
Turn off parallel and concurrent sweeping on system with just one processor/core.

BUG=

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

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

11 years agoSet unswept free bytes for concurent sweeper.
hpayer@chromium.org [Thu, 28 Feb 2013 15:07:28 +0000 (15:07 +0000)]
Set unswept free bytes for concurent sweeper.

BUG=

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

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

11 years agoMinor cleanup of CompareIC state
rossberg@chromium.org [Thu, 28 Feb 2013 14:43:57 +0000 (14:43 +0000)]
Minor cleanup of CompareIC state

Allow transitioning from KNOWN_OBJECT to KNONW_OBJECT or OBJECT.
Also, rename HEAP_NUMBER IC states to NUMBER, since they handle Smis, too.

R=jkummerow@chromium.org
BUG=

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

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

11 years agoRevert "Reapply optimization of DeoptimizeIf for ia32." (r13767)
mstarzinger@chromium.org [Thu, 28 Feb 2013 11:24:18 +0000 (11:24 +0000)]
Revert "Reapply optimization of DeoptimizeIf for ia32." (r13767)

This optimization turns out to have a negative effect on i5 processors
throughout the board. This needs further investigation to figure out
the underlying reason but will be rolled out for now.

R=danno@chromium.org

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

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

11 years agoFix math.round with SSE4.1.
yangguo@chromium.org [Thu, 28 Feb 2013 10:39:34 +0000 (10:39 +0000)]
Fix math.round with SSE4.1.

R=verwaest@chromium.org
BUG=

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

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

11 years agoFix wrong test in r13766 (Insert conversion to string in string.replace).
yangguo@chromium.org [Wed, 27 Feb 2013 15:36:02 +0000 (15:36 +0000)]
Fix wrong test in r13766 (Insert conversion to string in string.replace).

R=ulan@chromium.org
BUG=

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

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

11 years agoOrder arguments of ComputeMonomorphicFlags to match ComputeFlags.
verwaest@chromium.org [Wed, 27 Feb 2013 15:33:37 +0000 (15:33 +0000)]
Order arguments of ComputeMonomorphicFlags to match ComputeFlags.

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

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

11 years agoCurrently this mostly just moves code around.
verwaest@chromium.org [Wed, 27 Feb 2013 15:28:53 +0000 (15:28 +0000)]
Currently this mostly just moves code around.
- Later the different parts will become individual code objects that tailcall into one another.
- The mapcheck/symbol check still needs to be separated from the overall prototype-chain check so that the ICs can reuse the handlers.

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

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

11 years agoReapply optimization of DeoptimizeIf for ia32 broken in r13633.
mstarzinger@chromium.org [Wed, 27 Feb 2013 15:17:27 +0000 (15:17 +0000)]
Reapply optimization of DeoptimizeIf for ia32 broken in r13633.

R=danno@chromium.org

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

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

11 years agoInsert conversion to string in string.replace.
yangguo@chromium.org [Wed, 27 Feb 2013 15:12:30 +0000 (15:12 +0000)]
Insert conversion to string in string.replace.
(missing since r13761)

R=ulan@chromium.org
BUG=

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

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

11 years agoMiscellaneous profile-driven Isolate plumbing.
svenpanne@chromium.org [Wed, 27 Feb 2013 14:45:59 +0000 (14:45 +0000)]
Miscellaneous profile-driven Isolate plumbing.

While doing this, it became clear that quite a few functions should not be
static and should better live in various classes as instance methods, but I'll
leave this for a later CL.

BUG=v8:2487

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

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

11 years agoHandle negative input in inlined Math.round on Intel CPUs.
yangguo@chromium.org [Wed, 27 Feb 2013 14:44:57 +0000 (14:44 +0000)]
Handle negative input in inlined Math.round on Intel CPUs.

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

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

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

11 years agoFix materialization of arguments objects with unknown values.
mstarzinger@chromium.org [Wed, 27 Feb 2013 14:37:51 +0000 (14:37 +0000)]
Fix materialization of arguments objects with unknown values.

This fixes the deoptimizer to materialize arguments objects of correct
length even in cases where the actual argument values are unknown and
were optimized away by Crankshaft. This can happen if only the length
property or the identity of an arguments object is used.

R=svenpanne@chromium.org
BUG=chromium:163530
TEST=mjsunit/regress/regress-crbug-163530

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

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

11 years agoMake message listener API backwards compatible.
yangguo@chromium.org [Wed, 27 Feb 2013 14:35:39 +0000 (14:35 +0000)]
Make message listener API backwards compatible.

R=ulan@chromium.org
BUG=

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

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

11 years agoRefactor implementation for String.prototype.replace.
yangguo@chromium.org [Wed, 27 Feb 2013 14:14:45 +0000 (14:14 +0000)]
Refactor implementation for String.prototype.replace.

R=ulan@chromium.org
BUG=

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

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

11 years agoIncrease acceptable boot up memory size in tests for parallel sweeper threads.
hpayer@chromium.org [Wed, 27 Feb 2013 13:38:29 +0000 (13:38 +0000)]
Increase acceptable boot up memory size in tests for parallel sweeper threads.

BUG=

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

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

11 years agoAvoid TLS accesses in Object::Lookup and Object::GetPrototype.
svenpanne@chromium.org [Wed, 27 Feb 2013 13:22:29 +0000 (13:22 +0000)]
Avoid TLS accesses in Object::Lookup and Object::GetPrototype.

Both methods were among the top causes for TLS accesses.

BUG=v8:2487

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

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

11 years agoShrinking of PagedSpace is done only by sweeper.
hpayer@chromium.org [Wed, 27 Feb 2013 12:59:52 +0000 (12:59 +0000)]
Shrinking of PagedSpace is done only by sweeper.

BUG=

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

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

11 years agoAdded system thread manager class.
hpayer@chromium.org [Wed, 27 Feb 2013 12:55:55 +0000 (12:55 +0000)]
Added system thread manager class.

BUG=

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

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

11 years agoAdded Isolate parameter to CodeStub::GetCode().
svenpanne@chromium.org [Wed, 27 Feb 2013 12:33:24 +0000 (12:33 +0000)]
Added Isolate parameter to CodeStub::GetCode().

According to gprof, this was the #1 cause for TLS access during an Octane run.

BUG=v8:2487

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

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

11 years agoAvoid HEAP macro in spaces.cc
svenpanne@chromium.org [Wed, 27 Feb 2013 12:30:23 +0000 (12:30 +0000)]
Avoid HEAP macro in spaces.cc

This was another top cause for TLS access.

BUG=v8:2487

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

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

11 years agoNormalized map copies should not share code caches
jkummerow@chromium.org [Wed, 27 Feb 2013 12:17:50 +0000 (12:17 +0000)]
Normalized map copies should not share code caches

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

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

11 years agoDisable regress-crbug-160010 for Android because it triggers OOM.
ulan@chromium.org [Wed, 27 Feb 2013 12:14:21 +0000 (12:14 +0000)]
Disable regress-crbug-160010 for Android because it triggers OOM.

R=yangguo@chromium.org

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

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

11 years agoARM: Fix disassembly of some VFP instructions with condition codes
ulan@chromium.org [Wed, 27 Feb 2013 11:52:45 +0000 (11:52 +0000)]
ARM: Fix disassembly of some VFP instructions with condition codes

Previously, we would disassemble some VFP instructions like this:

  vmla.f64eq d16, d17, d18

This patch moves the condition to the right place:

  vmlaeq.f64 d16, d17, d18

Spotted by Rodolph Perfetta!

BUG=none

Review URL: https://chromiumcodereview.appspot.com/12335129
Patch from Hans Wennborg <hans@chromium.org>.

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

11 years agoInteger HConstants don't need to kDependsOnOsrEntries
jkummerow@chromium.org [Wed, 27 Feb 2013 11:40:25 +0000 (11:40 +0000)]
Integer HConstants don't need to kDependsOnOsrEntries

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

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

11 years agoClean up mjsunit/array-bounds-check-removal
jkummerow@chromium.org [Wed, 27 Feb 2013 10:50:37 +0000 (10:50 +0000)]
Clean up mjsunit/array-bounds-check-removal

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

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

11 years agoSet default number of sweeper threads to two.
hpayer@chromium.org [Wed, 27 Feb 2013 10:35:34 +0000 (10:35 +0000)]
Set default number of sweeper threads to two.

BUG=

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

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

11 years agoEmit VMLS for multiply-subtract on ARM.
ulan@chromium.org [Wed, 27 Feb 2013 10:24:40 +0000 (10:24 +0000)]
Emit VMLS for multiply-subtract on ARM.

BUG=none

Review URL: https://chromiumcodereview.appspot.com/12319113
Patch from Hans Wennborg <hans@chromium.org>.

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

11 years agoPrepare push to trunk. Now working on version 3.17.6.
mstarzinger@chromium.org [Wed, 27 Feb 2013 09:28:05 +0000 (09:28 +0000)]
Prepare push to trunk.  Now working on version 3.17.6.

R=jkummerow@chromium.org

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

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

11 years agoFix SSE2 scope being too broad in DoCmpIDAndBranch.
mstarzinger@chromium.org [Tue, 26 Feb 2013 18:12:27 +0000 (18:12 +0000)]
Fix SSE2 scope being too broad in DoCmpIDAndBranch.

R=ulan@chromium.org

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

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

11 years agoMIPS: Combine %_SubString and %_StringCharAt.
palfia@homejinni.com [Tue, 26 Feb 2013 17:48:14 +0000 (17:48 +0000)]
MIPS: Combine %_SubString and %_StringCharAt.

Port r13700 (587dc7c1)

BUG=

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

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

11 years agoRemove duplication and unnecessary HandleScope from HasElement helper functions
adamk@chromium.org [Tue, 26 Feb 2013 17:20:21 +0000 (17:20 +0000)]
Remove duplication and unnecessary HandleScope from HasElement helper functions

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

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

11 years agoSend SIGPROF signals on the profiler event processor thread
yurys@chromium.org [Tue, 26 Feb 2013 16:15:32 +0000 (16:15 +0000)]
Send SIGPROF signals on the profiler event processor thread

The patch is based on the previous one that was rolled out: https://code.google.com/p/v8/source/detail?r=12985

On Linux sampling for CPU profiler is initiated on the profiler event processor thread, other platforms to follow.

CPU profiler continues to use SamplingCircularQueue, we will replave it with a single sample buffer when Mac and Win ports support profiling on the event processing thread.

When --prof option is specified profiling is initiated either on the profiler event processor thread if CPU profiler is on or on the  SignalSender thread as it used to if no CPU profiles are being collected.

ProfilerEventsProcessor::ProcessEventsAndDoSample now waits in a tight loop, processing collected samples until sampling interval expires. To save CPU resources I'm planning to change that to use nanosleep as only one sample is expected in the queue at any point.

BUG=v8:2364

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

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

11 years ago[Android] Fix v8_shell compilation for Android component build.
ulan@chromium.org [Tue, 26 Feb 2013 15:41:04 +0000 (15:41 +0000)]
[Android] Fix v8_shell compilation for Android component build.

r12883 was in complete because the library was included for host and
target. Restrict to just target.

BUG=chromium:158821

Review URL: https://chromiumcodereview.appspot.com/12314118
Patch from Yaron Friedman <yfriedman@chromium.org>.

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

11 years agoVisit stored context when iterating stack for optimized stub.
ulan@chromium.org [Tue, 26 Feb 2013 14:24:16 +0000 (14:24 +0000)]
Visit stored context when iterating stack for optimized stub.

BUG=v8:2509
TEST=mjsunit/regress/regress-1125,NavierStokes fails on Nexus 10.
R=mstarzinger@chromium.org

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

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

11 years agoCompile FastCloneShallowObjectStub using Crankshaft.
mstarzinger@chromium.org [Tue, 26 Feb 2013 13:08:08 +0000 (13:08 +0000)]
Compile FastCloneShallowObjectStub using Crankshaft.

This changes FastCloneShallowObjectStub to be compiled independent of
the target architecture. It also adds tracing to the deoptimizer for
compiled stubs and contains some minor bugfixes.

R=danno@chromium.org

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

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

11 years agoUse boolean instead of Atomic32 for is_profiling_ flag
yurys@chromium.org [Tue, 26 Feb 2013 12:27:55 +0000 (12:27 +0000)]
Use boolean instead of Atomic32 for is_profiling_ flag

The field is only accessed on the JS thread so it can be converted into bool.

BUG=None

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

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

11 years agoFix overflow in WriteQuoteJsonString and SlowQuoteJsonString
dcarney@chromium.org [Tue, 26 Feb 2013 11:02:39 +0000 (11:02 +0000)]
Fix overflow in WriteQuoteJsonString and SlowQuoteJsonString

R=yangguo@chromium.org
BUG=

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

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

11 years agoFix bogus regexp test.
yangguo@chromium.org [Tue, 26 Feb 2013 10:49:59 +0000 (10:49 +0000)]
Fix bogus regexp test.

The reason this test fails on ARM hardware but not on Intel hardware
(including the ARM simulator) is this:
'\xa0' is interpreted as a negative signed byte number. Casting it to
uc16 sign-extends it. The resulting string does not fit into a one-byte
string, thus a two-byte string is allocated.
For some reason the code compiled for ARM does not sign-extend, and 0xa0
fits into a one-byte string. Thus a one-byte string is allocated. Trying
to cast it to two-byte causes assertion failure.

BUG=

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

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

11 years agoMake __proto__ a foreign callback on Object.prototype.
mstarzinger@chromium.org [Tue, 26 Feb 2013 10:46:00 +0000 (10:46 +0000)]
Make __proto__ a foreign callback on Object.prototype.

This moves the __proto__ property to Object.prototype and turns it into
a callback property actually present in the descriptor array as opposed
to a hack in the properties lookup. For now it still is a "magic" data
property using foreign callbacks and not an accessor property visible to
JavaScript.

The second effect of this change is that JSON.parse() no longer treats
the __proto__ property specially, it will be defined as any other data
property. Note that object literals still have their special handling.

R=rossberg@chromium.org
BUG=v8:621,v8:1949,v8:2441
TEST=mjsunit,cctest,test262

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

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

11 years agoRefactor RegExpStub to check lazily.
yangguo@chromium.org [Tue, 26 Feb 2013 09:53:07 +0000 (09:53 +0000)]
Refactor RegExpStub to check lazily.

R=ulan@chromium.org
BUG=

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

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

11 years agoMove extensibility check to the top of Object.isFrozen/Object.isSealed
adamk@chromium.org [Mon, 25 Feb 2013 19:44:21 +0000 (19:44 +0000)]
Move extensibility check to the top of Object.isFrozen/Object.isSealed

This speeds up isFrozen/isSealed checks on "normal" objects without
slowing down checks on frozen/sealed objects.

Though this ordering is not what ES5 specifies, the difference is not
observable (especially since the code bails out if the passed-in object
is a proxy).

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

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

11 years agoSpeed up non-interceptor case of Object.getOwnPropertyNames
adamk@chromium.org [Mon, 25 Feb 2013 18:58:47 +0000 (18:58 +0000)]
Speed up non-interceptor case of Object.getOwnPropertyNames

When there are interceptors on an object, it's possible to
end up with duplicate property names. But when all the names
are provided by v8, a collision is not possible, so we can
fast-path that case by not de-duping.

Also added better test coverage for interceptor API.

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

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

11 years agoDebugger: ScopeMirror has N^2 algorithm when building closure mirrors. (take 2).
ulan@chromium.org [Mon, 25 Feb 2013 16:46:54 +0000 (16:46 +0000)]
Debugger: ScopeMirror has N^2 algorithm when building closure mirrors. (take 2).

Review URL: https://chromiumcodereview.appspot.com/12326103
Patch from Pavel Feldman <pfeldman@chromium.org>.

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

11 years agoMIPS: Add android build support for mips in gyp.
jkummerow@chromium.org [Mon, 25 Feb 2013 16:39:03 +0000 (16:39 +0000)]
MIPS: Add android build support for mips in gyp.

Added mipsel target in gyp and makefiles used for android build.

BUG=

Review URL: https://codereview.chromium.org/12248014
Patch from Paul Lind <plind44@gmail.com>.

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

11 years agoARM: Make DoStoreKeyedFixedDoubleArray faster; don't allow conditional Vmov
ulan@chromium.org [Mon, 25 Feb 2013 16:15:37 +0000 (16:15 +0000)]
ARM: Make DoStoreKeyedFixedDoubleArray faster; don't allow conditional Vmov

This patch makes us generate faster code for DoStoreKeyedFixedDoubleArray,
by using a branch rather than a conditional Vmov instruction.

Conditional VFP instructions are not a great idea in general, and it was
especially bad in this case because Vmov expands to a bunch of instructions.
For this reason, the patch also removes the 'cond' parameter from Vmov.

Thanks to Rodolph for pointing me to this!

BUG=none

Review URL: https://chromiumcodereview.appspot.com/12316096
Patch from Hans Wennborg <hans@chromium.org>.

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

11 years agoFix for HeapSnapshotAddressReuse test case.
loislo@chromium.org [Mon, 25 Feb 2013 16:09:57 +0000 (16:09 +0000)]
Fix for HeapSnapshotAddressReuse test case.

BUG=V8:2189
TEST=HeapSnapshotAddressReuse

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

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

11 years agoPrepare push to trunk. Now working on version 3.17.5.
ulan@chromium.org [Mon, 25 Feb 2013 15:47:52 +0000 (15:47 +0000)]
Prepare push to trunk.  Now working on version 3.17.5.

R=jkummerow@chromium.org

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

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

11 years agoMade Isolate a mandatory parameter for everything Handle-related.
svenpanne@chromium.org [Mon, 25 Feb 2013 14:46:09 +0000 (14:46 +0000)]
Made Isolate a mandatory parameter for everything Handle-related.

Unified parameter order of CreateHandle with the rest of v8 on the way. A few
Isolate::Current()s had to be introduced, which is not nice, and not every place
will win a beauty contest, but we can clean this up later easily in smaller steps.

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

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

11 years agoFix bugs in generating and printing of Crankshaft stubs
danno@chromium.org [Mon, 25 Feb 2013 14:03:09 +0000 (14:03 +0000)]
Fix bugs in generating and printing of Crankshaft stubs

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

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