Commit Graph

308 Commits

Author SHA1 Message Date
ulan@chromium.org
0b6a617779 Age inline caches after context disposal.
Review URL: https://chromiumcodereview.appspot.com/9837005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11122 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-23 13:33:11 +00:00
jkummerow@chromium.org
5d6763aaba Enable experimental profiler by default
Review URL: https://chromiumcodereview.appspot.com/9726004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11089 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-19 17:29:25 +00:00
fschneider@chromium.org
1c99c90be7 Re-enable constructor inlining and inline === comparison with boolean constants.
This change reverts r10974 which disabled those two optimizations.
They were not responsible for the problem in earley-boyer.

BUG=v8:2009
Review URL: https://chromiumcodereview.appspot.com/9699117

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11076 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-19 07:51:37 +00:00
danno@chromium.org
6e1f8780f9 Add flag to always call DebugBreak on abort
R=vegorov@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11068 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-16 13:43:04 +00:00
fschneider@chromium.org
35786621f2 Change --hydrogen-filter to allow specifying a negative filter for optimized functions.
When prepending a '-' to the function name, the function will not be optimized.

--hydrogen-filter=foo works as before.

--hydrogen-filter=-foo means don't optimize foo.
Review URL: https://chromiumcodereview.appspot.com/9691042

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11036 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-14 09:45:17 +00:00
yangguo@chromium.org
235e9e20a7 Experimental Profiler: tweak type info threshold.
Also included: simplify String.slice.

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11021 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-13 11:38:37 +00:00
fschneider@chromium.org
1f7d42efc9 Landing for pliard@chromium.org: Remove static initializers in v8.
This change includes two CLs by pliard@chromium.org:

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

Note that this implementation of LazyInstance does not handle global destructors (i.e. the lazy instances are never deleted).

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



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

With this patch applied, we have only one static initializer left (in atomicops_internals_x86_gcc.cc). This static initializer populates a structure used by x86 atomic operations. It seems that we can hardly remove it. If possible, it will be removed in a next CL. 

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


BUG=v8:1859
Review URL: https://chromiumcodereview.appspot.com/9666052

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11010 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-12 13:56:56 +00:00
vegorov@chromium.org
da03f56b1f Inline functions that use arguments object in f.apply(o, arguments) pattern.
Support arguments materialization after deoptimization in all frames (not only in topmost one).

R=fschneider@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11008 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-12 12:49:41 +00:00
jkummerow@chromium.org
efee39a075 Profiler experiments: update flag default values.
This doesn't enable the experimental profiler by default, it just tunes its behavior when it is enabled.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10992 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-09 17:55:54 +00:00
jkummerow@chromium.org
1d4221a4d3 Profiler experiments: merge self-optimization code into interrupt-at-exit
Review URL: https://chromiumcodereview.appspot.com/9633012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10991 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-09 16:23:06 +00:00
ulan@chromium.org
e6576f0938 Revert r10435 and r10923 because of failures.
r10435 CL: http://codereview.chromium.org/9195005
r10923 CL: https://chromiumcodereview.appspot.com/9601010

R=fschneider@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10974 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-09 09:04:39 +00:00
rossberg@chromium.org
448b620dad Basic interface inference for modules.
All module expressions, and all variables that might refer to modules,
are assigned interfaces (module types) that are resolved using
unification. This is necessary to deal with the highly recursive
nature of ES6 modules, which does not allow any kind of bottom-up
strategy for resolving module names and paths.

Error messages are rudimental right now. Probably need to track
more information to make them nicer.

R=svenpanne@chromium.org
BUG=v8:1569
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10966 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-08 13:03:07 +00:00
mstarzinger@chromium.org
c113ea7cf8 Enable constructor inlining by default again.
R=vegorov@chromium.org
TEST=mjsunit/compiler/inline-construct

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10923 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-05 14:20:58 +00:00
vegorov@chromium.org
f416a684b2 Disable constructor inlining.
There are failures on Kraken.

R=fschneider@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10903 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-02 12:50:42 +00:00
mstarzinger@chromium.org
1009e414b6 MIPS: Implement inlined object allocation in Crankshaft.
Port r10881 (0d25c61e).

Original commit message:

Generates inlined code for object allocation specific to the initial map
of the given constructor function. Also forces completion of inobject
slack tracking while crankshafting to finalize instance size of these
objects.

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10890 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-01 12:38:58 +00:00
fschneider@chromium.org
a8980079a0 Add flag --trace-phase to selectively produce IR trace output.
By default --trace-hydrogen only generates the final IR (before
code generation). The other phases can be printed by specifying
them by their first letter. Currently H=HIR, L=LIR or Z=final IR (default)
are recognized.
Review URL: https://chromiumcodereview.appspot.com/9535009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10882 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-01 11:33:37 +00:00
erik.corry@gmail.com
9f375ea880 Fix secondary stub cache and add a test for the stub cache lookups.
Review URL: https://chromiumcodereview.appspot.com/9496010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10864 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-29 10:45:59 +00:00
mstarzinger@chromium.org
fb8eb04bfd Implement inlining of constructor calls.
R=vegorov@chromium.org,kmillikin@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10849 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-28 09:05:55 +00:00
vegorov@chromium.org
9b55ebaa3a When compiling for-in pass correct context value to the increment instruction.
Additionally force increment instruction to use int32 representation.

R=fschneider@google.com
BUG=http://crbug.com/115646
TEST=test/mjsunit/compiler/optimized-for-in.js

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10844 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-27 14:37:27 +00:00
vegorov@chromium.org
53622335e3 Disable for-in support in Crankshaft while crashes and regressions are being investigated.
R=yangguo@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10838 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-27 10:43:57 +00:00
jkummerow@chromium.org
75bf5e44d2 Profiler experiments: interrupt check at function exit
Review URL: https://chromiumcodereview.appspot.com/9432026

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10795 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-22 15:18:29 +00:00
rossberg@chromium.org
958b3bf470 Parsing of basic module declarations (no imports/exports yet).
Module definitions are not compiled or otherwise executed yet.
Toplevel module identifiers are bound but never initialized.

R=kmillikin@chromium.org,mstarzinger@google.com
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10759 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-20 14:02:59 +00:00
rossberg@chromium.org
1336b913d0 Make built-ins strict mode conforming, and support a --use-strict flag.
* Turned all uses of 'const' into 'var'.
* Turned all uses of local 'function' into 'var'.
* Added a couple of missing toplevel 'var' declarations.

One consequence is that the properties on the builtin object  are no longer
non-writable, and I had to adapt one test. Is that a problem?

Unfortunately, we cannot actually switch the library scripts to strict mode
by default, because that makes observable things like poisoned .caller properties
for library functions.

Also removed dead flag code in Compiler::Compile.

R=yangguo@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10758 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-20 13:48:24 +00:00
jkummerow@chromium.org
0177aa62da Count ICs that have type information.
Hidden behind --type-info-threshold=X flag, usage dependent on experimental profiler.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10753 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-20 12:57:23 +00:00
danno@chromium.org
6f7d9d2312 Enable smi_only_arrays by default.
R=jkummerow@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10732 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-16 15:47:36 +00:00
jkummerow@chromium.org
866e0eeeb7 Small update to experimental profiler flags
Review URL: https://chromiumcodereview.appspot.com/9360041

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10701 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-14 14:28:37 +00:00
jkummerow@chromium.org
4233bf8348 Initial support for count-based profiling
(behind FLAG_count_based_interrupts; only on ia32)

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10699 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-14 14:00:31 +00:00
jkummerow@chromium.org
de510c3a58 Split experimental profiler flags
Review URL: https://chromiumcodereview.appspot.com/9374015

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10660 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-09 13:30:01 +00:00
jkummerow@chromium.org
aa2e842134 Count-based profiling for primitive functions (hidden behind a flag)
Review URL: https://chromiumcodereview.appspot.com/9361026

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10657 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-09 10:19:46 +00:00
vegorov@chromium.org
96baf602df Ensure that regexp code flushing correctly updates slots buffer.
Enable code compaction again.

R=erik.corry@gmail.com

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10647 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-08 15:44:07 +00:00
erik.corry@gmail.com
53c6838cce Remove 5 unused flags.
Review URL: https://chromiumcodereview.appspot.com/9362014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10646 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-08 15:39:41 +00:00
kmillikin@chromium.org
e505a085e3 Remove the JSON AST printing support.
We are not currently maintaining or testing this.

R=danno@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10643 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-08 13:53:24 +00:00
rossberg@chromium.org
a0b287a3b1 Extend scanner with new Harmony module keywords (under flag).
R=mstarzinger@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10638 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-08 10:53:58 +00:00
fschneider@chromium.org
5bc8a69055 Remove another two unused flags.
Review URL: https://chromiumcodereview.appspot.com/9358019

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10634 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-08 10:26:17 +00:00
kmillikin@chromium.org
9463c00d64 Remove unused --peephole-optimization flag.
R=danno@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10630 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-08 09:55:25 +00:00
vegorov@chromium.org
cc3c37ef61 Disable code compaction again.
Check failures are gone but now layout tests are failing.

R=fschneider@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10626 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-07 16:34:26 +00:00
vegorov@chromium.org
99fa8059c3 Try enabling (non-incremental) code compaction again.
This time include slot-recording fixes in code flushing that were accidentally omitted from the previous commit.

R=mstarzinger@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10625 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-07 14:43:51 +00:00
vegorov@chromium.org
9920e441fa Disable code compaction again while we investigate buildbot check failures.
Review URL: https://chromiumcodereview.appspot.com/9351013

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10619 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-07 10:03:08 +00:00
vegorov@chromium.org
029aa9ef92 Enable non-incremental code compaction.
It is intended to bring memory usage down on idle notifications.

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

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10616 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-07 08:51:47 +00:00
fschneider@chromium.org
0ec7773680 Allow bailing out of the register allocator when running out of virtual registers.
1. Instead of checking upfront and estimating a limit for the number, we
now are able to stop register allocation and bailout when we don't
have enough virtual registers.

2. GCed some out-dated flags from flag-definition.h

3. Simplified the interface from the Lithium builder to the
register allocator in lithium-*.cc: For uses and definitions, we
just record the virtual register number given by the Hydrogen value id.
For temporaries, we request a new virtual register from the allocator.
For fixed temps, we don't need to do anything.

4. Increased number of deoptimization entries to 16K. Eventually we
probably want to make this array grow dynamically.
Review URL: https://chromiumcodereview.appspot.com/9325019

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10597 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-03 12:05:08 +00:00
svenpanne@chromium.org
82d1f51534 Give uses within a loop a greater weight when doing representation inference.
Uses of a value are weighted by a factor of FLAG_loop_weight (default: 10) for
every loop they are in. This makes uses in inner loops "more important", which
should improve the result of the representation inference.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10573 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-01 08:49:18 +00:00
yangguo@chromium.org
f8115b345d Removing some dead flags.
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10549 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-30 12:25:29 +00:00
rossberg@chromium.org
b05d7619c8 Do not turn on typeof null reform with --harmony switch.
R=yangguo@chromium.org
BUG=v8:1913
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10532 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-27 13:07:39 +00:00
erik.corry@gmail.com
dc9910f4a4 Minor cleanups of numeric seeded hashing patch.
Review URL: http://codereview.chromium.org/9155010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10367 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-10 13:24:18 +00:00
erik.corry@gmail.com
81a0271004 Randomize the seed used for string hashing. This helps guard against
CPU-eating DOS attacks against node.js servers.  Based on code from
Bert Belder.  This version only solves the issue for those that compile
V8 themselves or those that do not use snapshots.  A snapshot-based
precompiled V8 will still have predictable string hash codes.
Review URL: http://codereview.chromium.org/9086006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10330 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-04 15:12:15 +00:00
ulan@chromium.org
d61278da6d Do not reassign debug-only flag in release mode.
BUG=1871
TEST=

Review URL: http://codereview.chromium.org/9021011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10294 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-21 16:19:55 +00:00
yangguo@chromium.org
9821d28836 Change --print-all-code to include --code-comments.
Review URL: http://codereview.chromium.org/8968010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10268 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-16 08:38:52 +00:00
yangguo@chromium.org
4b05f743e0 Introduce --print-all-code flag and infrastructure for one flag to imply another flag.
Review URL: http://codereview.chromium.org/8957009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10267 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-15 17:00:27 +00:00
keuchel@chromium.org
1e9a7267ab Introduce extended mode.
This CL introduces a third mode next to the non-strict
(henceforth called 'classic mode') and 'strict mode'
which is called 'extended mode' as in the current
ES.next specification drafts. The extended mode is based on
the 'strict mode' and adds new functionality to it. This
means that most of the semantics of these two modes
coincide.

The 'extended mode' is entered instead of the 'strict mode'
during parsing when using the 'strict mode' directive
"use strict" and when the the harmony-scoping flag is
active. This should be changed once it is fully specified how the 'extended mode' is entered.

This change introduces a new 3 valued enum LanguageMode
(see globals.h) corresponding to the modes which is mostly
used by the frontend code. This includes the following
components:
* (Pre)Parser
* Compiler
* SharedFunctionInfo, Scope and ScopeInfo
* runtime functions: StoreContextSlot,
  ResolvePossiblyDirectEval, InitializeVarGlobal,
  DeclareGlobals

The old enum StrictModeFlag is still used in the backend
when the distinction between the 'strict mode' and the 'extended mode' does not matter. This includes:
* SetProperty runtime function, Delete builtin
* StoreIC and KeyedStoreIC
* StubCache

Review URL: http://codereview.chromium.org/8417035

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10062 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-24 15:17:04 +00:00
erik.corry@gmail.com
5c1044bb54 Add flag --collect-megamorphic-maps-from-stub-cache to help diagnose a
memory leak.
Review URL: http://codereview.chromium.org/8599006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10031 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-18 14:08:57 +00:00
whesse@chromium.org
7a25c43a07 Remove stack height tracking from ia32 non-optimizing code generator.
Review URL: http://codereview.chromium.org/8340023

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9857 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-01 12:20:46 +00:00
kmillikin@chromium.org
f077a41b12 MIPS: crankshaft implementation
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9828 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-28 08:14:46 +00:00
mstarzinger@chromium.org
622d35dc0e Implement Harmony sets and maps.
This implementation extends the internal ObjectHashTable to be able to
hold arbitrary objects (e.g. Smis, Strings, ...) as keys by applying
specialized hashing functions to primitive types. Equality of keys is
defined using the internal SameValue function.

R=rossberg@chromium.org
BUG=v8:1622
TEST=mjsunit/harmony/collections

Review URL: http://codereview.chromium.org/8372027

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9777 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-25 14:14:56 +00:00
lrn@chromium.org
a47caee095 Make builtin functions be skipped in stack traces.
Does include exposed builtin functions ("native functions").

Review URL: http://codereview.chromium.org/8345039

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9723 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-20 12:31:33 +00:00
danno@chromium.org
f7563019c7 Add flag to trace element kind transitions
Currently only traces transitions from generated ia32 code.

BUG=none
TEST=none

Review URL: http://codereview.chromium.org/8357004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9715 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-20 09:38:24 +00:00
yangguo@chromium.org
298e0a9862 Tentatively enabling string slices.
Review URL: http://codereview.chromium.org/8229009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9590 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-12 12:30:30 +00:00
rossberg@chromium.org
1abf3ed0a4 Introduce collective --harmony flag.
Shorten --harmony-block-scoping to --harmony-scoping.

R=keuchel@chromium.org
BUG=
TEST=

Review URL: http://codereview.chromium.org/8226017

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9589 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-12 12:23:06 +00:00
erik.corry@gmail.com
3ce33aacc6 New flag --stress-compaction
Review URL: http://codereview.chromium.org/8234002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9582 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-11 15:52:15 +00:00
erik.corry@gmail.com
ba8a7f374e Add --noclever-optimizations to disable some things that have
caused trouble in the past.
Review URL: http://codereview.chromium.org/8229005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9579 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-11 11:35:04 +00:00
erik.corry@gmail.com
f900fc9d80 Remove some unused and unneeded flags.
Review URL: http://codereview.chromium.org/8228004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9576 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-11 09:28:06 +00:00
yangguo@chromium.org
6792016261 Disabling string slices.
Review URL: http://codereview.chromium.org/8217006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9568 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-10 12:17:50 +00:00
yangguo@chromium.org
740f1e1c95 Enable string slices.
Review URL: http://codereview.chromium.org/8218002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9554 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-10 08:35:01 +00:00
erik.corry@gmail.com
6f833a35d5 Don't always compact when collecting.
Review URL: http://codereview.chromium.org/8124022

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9512 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-04 09:12:02 +00:00
vegorov@chromium.org
3e9891c1d0 Enable code flushing for full (non-incremental) collections.
This will ensure that we will flush code when we hit memory limits.

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

Review URL: http://codereview.chromium.org/8060053

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9484 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-09-29 13:51:47 +00:00
yangguo@chromium.org
acc105af91 Fix build with debuggersupport=off.
BUG=v8:899

Review URL: http://codereview.chromium.org/8073020

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9476 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-09-29 08:55:36 +00:00
erik.corry@gmail.com
355a2bf0a8 Temporarily switch on always-compact to flush out crash bugs.
Review URL: http://codereview.chromium.org/8068001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9463 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-09-28 11:15:23 +00:00
vegorov@chromium.org
6dee868e03 Enable compaction, disable code-compaction.
Enable array-join test again.

R=erik.corry@gmail.com

Review URL: http://codereview.chromium.org/8043022

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9425 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-09-26 11:46:16 +00:00
vegorov@chromium.org
1046b1a464 Disable compaction.
Introduce flag to control code compaction.

R=danno@chromium.org

Review URL: http://codereview.chromium.org/8037022

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9420 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-09-26 08:53:27 +00:00
danno@chromium.org
f48c9f6557 Basic support for tracking smi-only arrays on ia32.
Activated by the flag --smi-only-arrays

Currently not crankshaft support, using flag on non-ia32 platforms will lead to write barrier misses and crashes.

BUG=none
TEST=elements_kind.js

Review URL: http://codereview.chromium.org/7901016

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9392 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-09-22 11:30:04 +00:00
lrn@chromium.org
610281f4ee Fix calculation of live-bytes in pages.
The "live bytes" count is *really* a "marked black" count - i.e., the count of bytes *known* to be live.

Fix aggravating bug on X64 where assembler code used a value that was off
by a factor of 2^31.

Ensure that sweeping clears live-bytes. Added other missing increments.

Added print statements to trace live-byte modifications, under a flag.

Still a few cases of undercounting left.

(New issue to merge from GC branch to bleeding_edge)

Review URL: http://codereview.chromium.org/7970009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9338 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-09-20 11:20:00 +00:00
vegorov@chromium.org
ac36cb4504 Merge experimental/gc branch to the bleeding_edge.
Review URL: http://codereview.chromium.org/7945009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9328 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-09-19 18:36:47 +00:00
yangguo@chromium.org
77141f78ff Tentative implementation of string slices (hidden under the flag --string-slices).
TEST=test/mjsunit/string-slices.js

Review URL: http://codereview.chromium.org/7477045

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9027 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-08-26 13:03:30 +00:00
keuchel@chromium.org
3c7ca304fe Preliminary code for block scopes and block contexts.
BUG=
TEST=

Review URL: http://codereview.chromium.org/7549008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8911 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-08-11 16:29:28 +00:00
rossberg@chromium.org
bd18514972 Implement Harmony semantics for typeof null (behind a flag).
Harmony is intended to make typeof null === "null". This may
break existing programs. Implementing it will allow us to run
some tests on the actual web.

R=kmillikin@chromium.org
BUG=
TEST=

Review URL: http://codereview.chromium.org/7598030

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8876 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-08-10 12:12:06 +00:00
mstarzinger@chromium.org
2bb7c74f80 Preliminary Harmony weak maps API implementation.
R=rossberg@chromium.org,danno@chromium.org
BUG=v8:1565
TEST=mjsunit/harmony/weakmaps

Review URL: http://codereview.chromium.org/7529007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8811 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-08-03 11:55:13 +00:00
whesse@chromium.org
b10a1141b5 Add tracing of the stack height to full code generator.
BUG=
TEST=

Review URL: http://codereview.chromium.org/7097011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8755 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-28 10:17:41 +00:00
danno@chromium.org
d7641b89aa Re-activate unboxed double arrays by default.
R=svenpanne@chromium.org
BUG=none
TEST=none

Review URL: http://codereview.chromium.org/7477047

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8749 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-27 15:29:02 +00:00
ricow@chromium.org
b1115ec2d3 Revert r8719 - Enable unboxed double arrays by default.
It causes relibility bot crashes
Review URL: http://codereview.chromium.org/7461061

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8731 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-25 10:24:14 +00:00
danno@chromium.org
e63813ec48 Enable unboxed double arrays by default.
R=ager@chromium.org
BUG=none
TEST=none

Review URL: http://codereview.chromium.org/7491007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8719 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-22 09:48:54 +00:00
sgjesse@chromium.org
8a6108de95 Remove the ability to compile without logging and profiling
The preprocessor defines ENABLE_LOGGING_AND_PROFILING and ENABLE_VMSTATE_TRACKING has been removed as these where required to be turned on for Crankshaft to work. To re-enable reducing the binary size by leaving out heap and CPU profiler a new set of defines needs to be created.

R=ager@chromium.org

BUG=v8:1271
TEST=all

Review URL: http://codereview.chromium.org//7350014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8622 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-13 09:09:04 +00:00
ager@chromium.org
15429da469 Remove heap protection support.
It does not currently work and when it did work we never got it fast
enough to be useful.

R=kmillikin@chromium.org

Review URL: http://codereview.chromium.org/7324051

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8601 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-11 14:03:21 +00:00
vegorov@chromium.org
64c897b5cb Extend gdb-jit support (OSX/locals+parameters/prettyprint)
Generate Mach-O in-memory objects for OSX. Dump locals and parameters
for non-optimized frames.

Unfortunately, it seems like more-recent-GDB on OSX there is a little
temperamental (eg, the version from macports will be missing symbols
from gdb-integration_g when the version included in xcode will not--
and this is with --gdbjit off).

Includes some Python scripts to make dealing with V8 values in gdb more
pleasant.

Patch by Luke Zarko.

Review URL: http://codereview.chromium.org/6995161

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8483 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-30 11:52:00 +00:00
ager@chromium.org
2b286a3128 Remove --strict developer flag from V8.
It makes V8 not have JavaScript semantics by throwing exception all
the time. Even our own natives JavaScript code cannot run using that.

R=ricow@chromium.org
BUG=v8:1511

Review URL: http://codereview.chromium.org/7248056

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8475 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-30 06:58:13 +00:00
mikhail.naganov@gmail.com
f4bf8f8fee Remove obsolete aggregating and non-working producers heap profilers.
2000 LOC are gone!

R=sgjesse@chromium.org
BUG=1481

Review URL: http://codereview.chromium.org/7247018

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8406 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-24 11:38:47 +00:00
sgjesse@chromium.org
870ef6bdfe Remove the flag --debug-info
This flag has not bees set to false for years, and even when building without debugging support the position information is required for stack traces.

R=ager@chromium.org

BUG=none
TEST=none

Review URL: http://codereview.chromium.org//7046078

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8252 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-10 07:15:46 +00:00
fschneider@chromium.org
424407c727 Simplify the check when to perform loop invariant code motion.
Allow HChange instructions to be hoisted out of loops. To avoid
unnecessary code motion we don't hoist instructions from blocks that
have been marked containing an unconditional deoptimization.
Review URL: http://codereview.chromium.org/7003087

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8245 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-09 15:49:21 +00:00
danno@chromium.org
4de3bb500c Implement core support for FixedDoubleArrays.
Under a flag without IC or Crankshaft support.

BUG=none
TEST=none

Review URL: http://codereview.chromium.org/7089002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8229 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-09 10:03:35 +00:00
svenpanne@chromium.org
683baa1682 Removed dead flags.
Review URL: http://codereview.chromium.org/7077028

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8097 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-30 09:42:28 +00:00
danno@chromium.org
123500999f Reland 7917:
Better support for 'polymorphic' JS and external arrays

Allow  keyed store/load stubs to switch between external array and fast JS arrays without forcing a state transition to the generic stub.

There CL consists of two pieces of functionality. First, code stubs for fast element arrays don't immediately transition to the MEGAMORPHIC state when there's a map mismatch. Second, two ICs are cached per map for fast elements, the MONOMORPHIC version, and a new MEGAMORPHIC version that handles two or more different maps and dispatches to shared stubs to perform the array operation.

Review URL: http://codereview.chromium.org/7036016

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7935 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-18 13:17:29 +00:00
danno@chromium.org
83c84a43e8 Revert 7917
TBR=danno@chromium.org

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7918 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-17 18:47:10 +00:00
danno@chromium.org
5a9b2b3c5f Better support for 'polymorphic' JS and external arrays
Allow  keyed store/load stubs to switch between external array and fast JS arrays without forcing a state transition to the generic stub.

There CL consists of two pieces of functionality. First, code stubs for fast element arrays don't immediately transition to the MEGAMORPHIC state when there's a map mismatch. Second, two ICs are cached per map for fast elements, the MONOMORPHIC version, and a new MEGAMORPHIC version that handles two or more different maps. Currently, the only array types supported by the MEGAMORPHIC stub are fast elements for objects and JSArrays.

BUG=
TEST=

Review URL: http://codereview.chromium.org/6894003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7917 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-17 17:29:13 +00:00
vitalyr@chromium.org
73c809bb0e Isolates cleanup: move top.cc to isolate.cc.
Review URL: http://codereview.chromium.org/6969042

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7884 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-13 08:54:16 +00:00
fschneider@chromium.org
48077e89e9 Remove support for branch hints from the IA32 and X64 assembler.
They were not on by default and should not be needed on modern
platforms.
Review URL: http://codereview.chromium.org/7001025

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7866 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-11 13:26:07 +00:00
sgjesse@chromium.org
00bc2db28f ARM: Support hardfloat in SCons build and make it a build time setting
Add option armeabi to the SCons build for selecting the floating point variant to use. Also add externally defined CCFLAGS environment for all targets. Run test.py with option -S armeabi=hardfloat to test with hardfloat enabled.

Make selecting hardfloat EABI variant a build-time option instead of a runtime option.

Add a simple check of the EABI variant during V8 initialization to exit if the compilation was not configured correctly. The reason for this is that GCC does not provide a compile time symbol defining the EABI variant. This check is not fool-proof as it cannot check the compilation configuration used for the snapshot if any.

R=karlklose@chromium.org, erik.corry@gmail.com

BUG=none
TEST=none

Review URL: http://codereview.chromium.org//6905098

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7715 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-29 08:50:38 +00:00
karlklose@chromium.org
7ba01a83e9 Implement hardfloat calling convention in macro assembler and simulator.
Review URL: http://codereview.chromium.org/6874007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7693 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-27 14:29:25 +00:00
vegorov@chromium.org
74c258f281 Add prototype transitions cache to Map.
Review URL: http://codereview.chromium.org/6902029

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7679 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-26 09:44:55 +00:00
ager@chromium.org
5fd4fa2a9e Introduce experimental natives that are enabled by a runtime flag.
Clean up the use of js2c. We generated two identical files.

R=sgjesse@chromium.org,rossberg@chromium.org
BUG=
TEST=

Review URL: http://codereview.chromium.org/6865013

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7630 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-15 12:31:03 +00:00
sgjesse@chromium.org
af7804f3b7 ARM: Always enable ARMv7 when VFPv3 is enabled.
R=vegorov@chromium.org, rodolph.perfetta@gmail.com

BUG=v8:1317
TEST=

Review URL: http://codereview.chromium.org//6825037

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7580 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-12 06:12:45 +00:00
ager@chromium.org
ea8312ba33 Reapply: Never use classic code generator.
Crankshaft is now the default on all platforms. This is the first
patch on the way to removing the classic code generator from the
system.

This time with no removal of the crankshaft flag. --nocrankshaft is
not at all the same as --always-full-compiler which I had used instead
for testing. That was what caused timeouts on the buildbots because of
repeated attempts to optimize hot functions. It makes sense to keep
the crankshaft flag in case you want to run only with the full
compiler and with no adaptive compilation.

R=vitalyr@chromium.org

Review URL: http://codereview.chromium.org/6759070

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7486 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-01 19:46:21 +00:00
sgjesse@chromium.org
8099bf3531 Revert "Never use classic code generator."
This reverts r7469 which might have caused the timeouts on the buildbot.

TBR=ager@chromium.org

BUG=
TEST=

Review URL: http://codereview.chromium.org//6788009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7481 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-01 14:38:30 +00:00