Commit Graph

7302 Commits

Author SHA1 Message Date
ulan@chromium.org
20f2c9b645 Do not call memset() to initialize StubCache.
Review URL: https://chromiumcodereview.appspot.com/9464054
Patch from Iliyan Malchev <malchev@google.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10861 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-28 18:26:04 +00:00
svenpanne@chromium.org
f9cdb0e18c Explicitly use a Zone when allocating Range.
This CL is a step towards removing ZoneObject's new operator without a Zone
parameter, which uses Isolate::Current. For e.g. the bulletben benchmark, this
CL reduces the number of calls to this new operator by roughly 120k, but we are
still left with 780k calls from other sites...

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10860 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-28 15:32:58 +00:00
svenpanne@chromium.org
22e66d395e Thread isolate through Property constructor, avoiding Isolate::Current.
This removes roughly 5k invocations of Isolate::Current from the string-tagcloud
benchmark.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10859 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-28 15:32:06 +00:00
yangguo@chromium.org
59a7bdd6e2 Add code kind check before preparing for OSR.
BUG=v8:1900, 115073

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10858 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-28 12:59:00 +00:00
fschneider@chromium.org
15542081e9 Pass zone explicitly to zone-allocation on x64 and ARM.
This is a very mechanical change to reduce the number of calls to
Isolate::Current that come with every plain new-allocation.

BUG=v8:1802
Review URL: https://chromiumcodereview.appspot.com/9491004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10857 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-28 10:53:13 +00:00
svenpanne@chromium.org
3df99e7eb7 Thread the current isolate through a few places, avoiding Isolate::Current().
This removes approx. 12k calls of Isolate::Current() in string-tagcloud.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10856 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-28 10:32:02 +00:00
mstarzinger@chromium.org
564a6f035a Port string construct stub to x64.
R=yangguo@chromium.org
BUG=v8:849

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10855 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-28 10:20:57 +00:00
rossberg@chromium.org
d809d17f5d Further refactoring of declarations in the AST:
Define modules as module declarations.
Separate function declarations from var declarations.

R=jkummerow@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10854 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-28 10:12:39 +00:00
ulan@chromium.org
ddaf909f82 Prepare push to trunk. Now working on version 3.9.13.
R=yangguo@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10851 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-28 09:45:17 +00:00
mstarzinger@chromium.org
170511e52a Fix presubmit errors in previous revision.
R=ulan@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10850 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-28 09:38:16 +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
erik.corry@gmail.com
a81b05af93 Fix the negative lookup stub to handle deleted entries in a
dictionary.  This fixes http://code.google.com/p/v8/issues/detail?id=1964
"Closure-uri benchmark is sensitive to hash seed".
Review URL: https://chromiumcodereview.appspot.com/9463012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10848 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-28 08:32:44 +00:00
svenpanne@chromium.org
18ba22168e Handle CALLBACKS correctly in IsProperty functions.
With transitions in AccessorPairs, it is not enough to look at the PropertyType
alone to decide whether we look at a property or not: For objects with
JavaScript accessors, we have to look into the AccessorPair itself and see if
one of its 2 parts is actually a JavaScript accessor. Therefore, a predicate
with a PropertyType argument alone doesn't make sense anymore, we might need the
associated value, too.

Things are complicated by the fact that the holder in a LookupResult can be
NULL, so we must be careful to retrieve its value only when it is really
needed. To achieve the needed call-by-name semantics, a new Entry is introduced,
which is basically a closure over a DescriptorArray and an index into this array
(C++0x to the rescue!). GCC is clever enough to inline this class, so we pay no
runtime penalty for this abstraction.

It's all a bit ugly, but this is caused by the current structure of Descriptor,
DescriptorArray and LookupResult: Things would be much easier if DescriptorArray
were, well, an array of Descriptors, and LookupResult were a 'Maybe Descriptor'
(in Haskell-terms).

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10847 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-28 07:16:50 +00:00
mikhail.naganov@gmail.com
2350d11dac Remove now unused CalculateExactRetainedSize function & co.
This patch changes the signature of the v8::HeapGraphNode::GetRetainedSize method, but it's not used in Chromium, and it should be easy for other clients (if any) to adjust to this change.

BUG=none
TEST=none

Review URL: https://chromiumcodereview.appspot.com/9466014
Patch from Alexei Filippov <alexeif@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10846 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-27 15:42:36 +00:00
vegorov@chromium.org
c112fdc398 Adds a new API where the host can supply a callback function. The callback function can resolve the location of a return address on stack to the location where a return-address rewriting profiler stashed the original return address.
Review URL: https://chromiumcodereview.appspot.com/9401019
Patch from Sigurður Ásgeirsson <siggi@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10845 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-27 15:15:53 +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
jkummerow@chromium.org
d5e252b157 MIPS: Profiler experiments: Fix debugger in the presence of self-optimization headers
Port r10834 (0ce8cc524).

Note: this commit is a simple fix-up for FullCodeGenerator::self_optimization_header_size().

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10843 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-27 14:24:08 +00:00
yangguo@chromium.org
32e2b0319e Update break points set with partial file name after compile.
BUG=v8:1853

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10842 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-27 11:52:08 +00:00
yangguo@chromium.org
8adb1c4a2f Prepare push to trunk. Now working on version 3.9.12.
R=ulan@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10839 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-27 11:44:53 +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
64920e9ba6 Profiler experiments: fix snapshotting with count-based interrupts
Review URL: https://chromiumcodereview.appspot.com/9447098

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10837 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-27 08:45:39 +00:00
jkummerow@chromium.org
610d179b08 Profiler experiments: Don't add self-optimization headers to functions that can't be optimized anyway
Review URL: https://chromiumcodereview.appspot.com/9460058

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10836 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-27 08:11:04 +00:00
jkummerow@chromium.org
2c29f4d575 Profiler experiments: be more careful when accessing TypeFeedbackInfo
Review URL: https://chromiumcodereview.appspot.com/9471008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10835 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-27 08:08:14 +00:00
jkummerow@chromium.org
a19c50afb4 Profiler experiments: Fix debugger in the presence of self-optimization headers
Review URL: https://chromiumcodereview.appspot.com/9466012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10834 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-27 07:49:14 +00:00
rossberg@chromium.org
becd8dd11c Make 'module' a context-sensitive keyword.
Baseline: http://codereview.chromium.org/9401008/

R=lrn@chromium.org,mstarzinger@chromium.org
BUG=v8:1957
TEST=mjsunit/harmony/module-parsing

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10832 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-24 15:53:09 +00:00
mikhail.naganov@gmail.com
2fe4af7135 Tune snapshot taking progress indicator.
As of dominators and retained sizes calculation take quite small time now
comparing to the main passes, it is worth to exclude these from progress
indicator. Now the indicator smoothly runs to 100%, while previously
it ran to 50% and then instantly jumped to 100%.

BUG=none
TEST=none

Review URL: https://chromiumcodereview.appspot.com/9465010
Patch from Alexei Filippov <alexeif@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10831 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-24 15:46:45 +00:00
yangguo@chromium.org
289b44f740 Prepare push to trunk. Now working on version 3.9.11.
R=jkummerow@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10828 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-24 14:39:17 +00:00
mstarzinger@chromium.org
36a91e30f7 Fix redefining of attributes on aliased arguments.
This allows elements of the non-strict arguments object to be redefined
with custom attributes and still maintain an alias into the context.
Such a slow alias is maintained by placing a special marker into the
dictionary backing store of the arguments object.

R=rossberg@chromium.org
BUG=v8:1772
TEST=test262,mjsunit/object-define-property

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10827 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-24 14:34:01 +00:00
yangguo@chromium.org
4a28808934 Fix strict mode in d8.js.
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10826 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-24 14:01:34 +00:00
mikhail.naganov@gmail.com
9408c5c8bf Revert "Tune snapshot taking progress indicator."
This reverts commit 630437a0239ce4de029ea367083cb12a8099506c.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10825 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-24 13:32:58 +00:00
svenpanne@chromium.org
482325ec2f Simplified return values a bit when defining accessors.
Review URL: https://chromiumcodereview.appspot.com/9467005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10824 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-24 13:04:16 +00:00
mikhail.naganov@gmail.com
c95aecb935 Tune snapshot taking progress indicator.
As of dominators and retained sizes calculation take quite small time now
comparing to the main passes, it is worth to exclude these from progress
indicator. Now the indicator smoothly runs to 100%, while previously
it ran to 50% and then instantly jumped to 100%.

BUG=none
TEST=none

Review URL: https://chromiumcodereview.appspot.com/9463008
Patch from Alexei Filippov <alexeif@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10823 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-24 12:52:35 +00:00
mstarzinger@chromium.org
9f83b4ee36 Fix Object.getOwnPropertyDescriptor in string elements.
This fixes Object.getOwnPropertyDescriptor to report string character
elements as enumerable in accordance with the spec.

BUG=v8:862
TEST=mjsunit/get-own-property-descriptor

Review URL: https://chromiumcodereview.appspot.com/9447053
Patch from Ioseb Dzmanashvili <ioseb.dzmanashvili@gmail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10822 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-24 11:58:09 +00:00
mikhail.naganov@gmail.com
e5281f98a7 Some more speedup to the dominators tree building in heap profiler.
Replace timestamps with affected bool vector. Timestamps could cause
some entries marked as affected on iteration i, to be recalculated
twice on iterations i and i+1. Which is redundant.

BUG=none
TEST=none

Review URL: https://chromiumcodereview.appspot.com/9467002
Patch from Alexei Filippov <alexeif@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10821 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-24 11:16:12 +00:00
yangguo@chromium.org
baabb87dae Fix HConstant's hash function for smis on x64.
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10820 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-24 10:59:12 +00:00
fschneider@chromium.org
a6083af4fa Fix a performance bug in the register contraints for polymorphic loads.
The context is only needed in the esi register if there is a call to
the generic stub.
Review URL: https://chromiumcodereview.appspot.com/9467001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10819 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-24 10:31:16 +00:00
mstarzinger@chromium.org
70804bacf5 Fix compilation issue on Win64.
R=yangguo@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10818 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-24 09:45:27 +00:00
yangguo@chromium.org
7a98cb62c3 Speed up removing phi nodes.
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10817 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-24 08:46:10 +00:00
yangguo@chromium.org
0a6f18294f Fix bug in r10812.
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10816 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-23 15:37:27 +00:00
mstarzinger@chromium.org
30dcdb6a36 Revert r10811 because of test flakiness.
TBR=vegorov@chromium.org
BUG=v8:1322

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10813 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-23 14:12:44 +00:00
yangguo@chromium.org
671084074d Lazy removal of dead HValues in GVN from use lists.
BUG=v8:1969
TEST=regress/regress-1969

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10812 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-23 13:59:35 +00:00
mstarzinger@chromium.org
c1b97fe842 Allow inlining of functions containing function literals.
R=fschneider@chromium.org,vegorov@chromium.org
BUG=v8:1322
TEST=mjsunit/compiler/inline-literals

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10811 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-23 12:24:03 +00:00
svenpanne@chromium.org
a1f3c9407f When redefining accessor properties, defensively copy AccessorPairs.
The previous code relied on the tricky global invariant that there is no map
sharing when accessor properties are involved (or in other words: that
TransformToFastProperties is dumb enough :-). Although this is not a real
problem with the current code, this assumption breaks when map sharing in fast
mode is enabled, so we defensively copy an AccessorPair.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10810 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-23 12:12:28 +00:00
vegorov@chromium.org
fbc230e42b Ensure that executable pages are properly guarded.
Split executable memory chunks into two pieces: header with all metadata (protection: RW) and body (protection: RWX). Separate header from metadata with a guard page and add a guard page after the page body.

R=erik.corry@gmail.com
BUG=http://crbug.com/115151

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10809 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-23 12:11:24 +00:00
mstarzinger@chromium.org
1a356cff3e Fix redefinition of aliased elements in arguments.
This refactors the way we (re)define elements to perform normalization
and attribute updating at a much deeper level, thereby removing some
bogus special cases in upper runtime layers.

Most element setters take an indicator flag that distinguishes between
setting and defining. Setting of an element causes attributes to remain
unchanged, writability to be checked and callbacks to be called.
Defining of an element causes attributes to be updated and callbacks to
be overridden. The same approach could be taken for properties.

R=svenpanne@chromium.org
BUG=v8:1772
TEST=test262,test262/15.2.3.6-4-333-11

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10808 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-23 11:43:07 +00:00
fschneider@chromium.org
67c6e9260b Fix Windows compilation.
TBR=svenpanne@chromium.org
Review URL: https://chromiumcodereview.appspot.com/9456006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10807 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-23 10:12:50 +00:00
fschneider@chromium.org
d1172448ad Make HashMap a template class to specify the allocation policy.
The old HashMap class had an explicit member to determine the allocation
policy. The template version matches the approach used already for
lists.

Cleanup some include dependencies and unnecessary forward declarations.

Cleanup some dead code from isolate.h and replace some HEAP macros
with GetHeap().
Review URL: https://chromiumcodereview.appspot.com/9372106

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10806 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-23 09:12:57 +00:00
kmillikin@chromium.org
7d4b78acb1 Prepare push to trunk. Now working on version 3.9.10.
R=jkummerow@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10801 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-23 08:23:04 +00:00
lrn@chromium.org
5468fbb19e Allow the ZWJ and ZWNJ characters in IdentifierPart as per ES5.
Patch from Mathias Bynens <mathias@qiwi.be>
BUG=1958
TEST=Try `var a\u200c\u200d;` and confirm it doesn't throw an error.

Review URL: https://chromiumcodereview.appspot.com/9433031
Patch from Mathias Bynens <mathias@qiwi.be>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10800 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-23 08:15:45 +00:00
mikhail.naganov@gmail.com
c6d9454dff Speedup dominators construction in heap snapshot.
It is achieved by:
1. skipping entries those dominators have already reached root.
2. processing only entries those retainers have changed their
   dominators and skipping other entries.
3. removing extra memory indirection by making the dominators array
   contain entry indices instead of entries themselves.

The dominators building time has dropped from ~4000 ms to ~200 ms
on gmail.com heap snapshot.

BUG=none
TEST=none

Review URL: https://chromiumcodereview.appspot.com/9372105
Patch from Alexei Filippov <alexeif@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10799 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-22 23:06:11 +00:00
vegorov@chromium.org
4c92b67374 RandomizedVirtualAlloc should check for isolate presence instead of using Isolate::Current()
CpuFeatures::Probe request executable memory before any isolate is initialized and entered.

TBR=erik.corry@gmail.com

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10798 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-22 19:47:57 +00:00
vegorov@chromium.org
283098fdcb Randomize allocation addresses on windows.
BUG=115151

Review URL: https://chromiumcodereview.appspot.com/9372083
Patch from Cris Neckar <cdn@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10797 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-22 17:21:55 +00:00
vegorov@chromium.org
5bb6a8399d Support OSR in for-in loops.
Modify PreProcessOsrEntry to work with OSR entries that have non-empty expression stack.

Modify graph builder to take for-in state from environment instead of directly referencing emitted instructions.

Extend %OptimizeFunctionOnNextCall with an argument to force OSR to make writing OSR tests easier: %OptimizeFunctionOnNextCall(f, "osr").

R=fschneider@chromium.org
TEST=test/mjsunit/compiler/optimized-for-in.js

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10796 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-22 16:45:35 +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
vegorov@chromium.org
6703dddac4 Support fast case for-in in Crankshaft.
Only JSObject enumerables with enum cache (fast case properties, no interceptors, no enumerable properties on the prototype) are supported.

HLoadKeyedGeneric with keys produced by for-in enumeration are recognized and rewritten into direct property load by index. For this enum-cache was extended to store property indices in a separate array (see handles.cc).

New hydrogen instructions:

- HForInPrepareMap: checks for-in fast case preconditions and returns map that contains enum-cache;
- HForInCacheArray: extracts enum-cache array from the map;
- HCheckMapValue: map check with HValue map instead of immediate;
- HLoadFieldByIndex: load fast property by it's index, positive indexes denote in-object properties, negative - out of object properties;

Changed hydrogen instructions:

- HLoadKeyedFastElement: added hole check suppression for loads from internal FixedArrays that are knows to have no holes inside.

R=fschneider@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10794 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-22 12:47:42 +00:00
yangguo@chromium.org
0f348c9208 Fix compilation with MinGW-w64.
BUG=v8:1943
TEST=

Review URL: https://chromiumcodereview.appspot.com/9428027
Patch from Jonathan Liu <net147@gmail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10793 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-22 12:26:36 +00:00
yangguo@chromium.org
5632b6d005 Remove unused class AssertNoZoneAllocation.
BUG=v8:1962
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10792 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-22 12:21:18 +00:00
fschneider@chromium.org
7de6be06cf Eliminate use of ZONE macro in BitVector class and pass a zone explicitly.
Review URL: https://chromiumcodereview.appspot.com/9416092

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10791 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-22 11:40:28 +00:00
svenpanne@chromium.org
333d5c789e Cleaned up setting of accessors.
This CL is an intermediate step only, in the end we need to have a single
DefineOrRedefineAccessorProperty call for a single Object.defineProperty
call. Currently we can end up making two such calls, making the necessary access
checks extremely ugly and hard (impossible?) to get right for complete spec
conformance.

The bulk of the change is quite mechanical:

 * Prepare an AccessorPair *before* we add it to our data structures,
   eliminating the previous voodoo-like threading of a placeholder.

 * The previous item makes it possible to activate our check that we do not
   share AccessorPairs by accident.

 * Split a monster method into 2 quite unrelated methods.

 * Use templated To method in a few places.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10788 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-22 10:52:57 +00:00
jkummerow@chromium.org
4e0091bebb Profiler experiments: self-optimization for functions containing calls
Review URL: https://chromiumcodereview.appspot.com/9430042

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10787 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-22 10:48:58 +00:00
fschneider@chromium.org
c3297c8d2e Use placement-new operator in the register allocator.
Pass the zone explicitly to avoid calling Isolate::Current()->zone().
Review URL: https://chromiumcodereview.appspot.com/9430002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10785 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-21 16:47:02 +00:00
mikhail.naganov@gmail.com
4b54dc52ba Speedup the snapshot serialization.
Replaced multiple calls to AddNumber with a single AddString.
AddNumber may now print the value directly into the output buffer.

BUG=none
TEST=none

Review URL: https://chromiumcodereview.appspot.com/9395087
Patch from Alexei Filippov <alexeif@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10784 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-21 14:56:24 +00:00
rossberg@chromium.org
e414be5fc6 After assignment return right hand side value instead of undefined
when Object.isExtensible(o) === false

Added corresponding tests

ES5 description: http://es5.github.com/#x11.13.1

Related issue: http://code.google.com/p/v8/issues/detail?id=1901

Contributed by ioseb.dzmanashvili@gmail.com

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10783 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-21 14:09:45 +00:00
ulan@chromium.org
809ce0c822 Remove redundant statements in NewFunctionFromSharedFunctionInfo.
R=rossberg@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10780 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-21 13:08:50 +00:00
svenpanne@chromium.org
76a201df2f Removed Runtime_DefineAccessor.
Runtime_DefineOrRedfineAccessorProperty basically does the same, so we have 1
code path less to worry about.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10779 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-21 12:47:27 +00:00
vegorov@chromium.org
f5c8ac9839 On ia32 LFunctionLiteral instruction should get context from esi register instead of stack slot.
This makes LFunctionLiteral safe even when it is used from inside inlined function.

All other architectures were implementing LFunctionLiteral correctly.

R=mstarzinger@chromium.org
TEST=test/mjsunit/regress/regress-inlining-function-literal-context.js

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10778 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-21 12:10:04 +00:00
jkummerow@chromium.org
54bd4e9a76 Prepare push to trunk. Now working on version 3.9.9.
R=yangguo@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10775 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-21 10:01:54 +00:00
erik.corry@gmail.com
81916b1763 Make sure that top bits are zero when storing untagged 32 bit values
in 64 bit spill slots.
Review URL: https://chromiumcodereview.appspot.com/9378006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10774 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-21 09:11:35 +00:00
fschneider@chromium.org
93802f79e5 MIPS: Enable optimization of top-level code and generate deoptimization support lazily.
Port r10700 (c976fbd5).

Original commit message:
This change enables optimization of top-level and eval-code. For this to work, it adds
support for declaring global variables in optimized code.

At the same time it disables the eager generation of deoptimization support data
in the full code generator (originally introduced in
r10040). This speeds up initial compilation and saves
memory for functions that won't be optimized. It requires
recompiling the function with deoptimization
support when we decide to optimize it.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10773 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-21 08:36:16 +00:00
svenpanne@chromium.org
9631dea19a Cleaned up runtime macros a bit.
The bulk of this CL is purely mechanical: Make the CONVERT_FOO macros more
uniform by always using an index instead of an object. Apart from this, it
includes a few minor changes like using CONVERT_SMI_ARG_CHECKED a bit more or
introducing a new macro for PropertyDetails. Nothing spectacular, just something
sitting on my disk for quite some time now...

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10772 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-21 07:35:33 +00:00
mstarzinger@chromium.org
417a01accf Fix RegExp white-space character class to match BOMs.
R=rossberg@chromium.org
TEST=test262/S15.10.2.12_A?_T1,mjsunit/regexp

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10770 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-20 17:50:53 +00:00
fschneider@chromium.org
b90a8ec851 Enable test-api/TurnOnAccessCheckAndRecompile and change it so it can't cause a GC.
A GC in the access check callbacks NamedSecurityCallback and IndexedSecurityCallback
violates the contract about these callbacks.

Added a EXTERNAL VMState scope around the call to FailedAccessCheckCallback to be
consistent with the other callback invocations.

BUG=v8:1952
TEST=cctest/test-api/TurnOnAccessCheckAndRecompile
Review URL: https://chromiumcodereview.appspot.com/9425048

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10764 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-20 15:34:08 +00:00
rossberg@chromium.org
d180039f9c Remove strict mode from message.js, seems to break Error conformance.
R=mstarzinger@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10763 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-20 15:02:23 +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
yangguo@chromium.org
8ebbd863a5 Port r10490 and r10615 to cygwin.
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10757 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-20 13:42:24 +00:00
ulan@chromium.org
fc36795ea8 Fix presubmit.
R=yangguo@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10756 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-20 13:22:02 +00:00
yangguo@chromium.org
30bcc481e1 Enable inlining for Math.min/max in more cases.
Review URL: https://chromiumcodereview.appspot.com/9372021

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10755 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-20 13:21:15 +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
ulan@chromium.org
2740d30687 Fix compile error on windows.
R=yangguo@chromium.org

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10752 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-20 12:36:35 +00:00
jkummerow@chromium.org
852b4f9854 Fix memory leak and missing #include in StartupDataDecompressor
BUG=v8:1960
TEST=compile with GYPFLAGS=-Dv8_compress_snapshot_data=bz2, then run d8 with valgrind

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10751 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-20 11:01:17 +00:00
fschneider@chromium.org
3f8ed7c30d Add a missing check for a failure result.
Function calls that may return a failure must use the result. Enforce
this by adding missing MUST_USE_RESULT to their declarations.
Review URL: https://chromiumcodereview.appspot.com/9421032

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10748 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-20 10:17:25 +00:00
svenpanne@chromium.org
77079b6fd3 Avoid sharing AccessorPairs during Genesis.
To test the upcoming changes for map sharing in the presence of accessors, it is
essential that we keep a few global invariants: The map tree should always stay
a tree and AccessorPairs should not be shared between different DescriptorArrays
and/or StringDictionaries. This CL adds a test method for the latter invariant
and makes some changes to the bootstrapping process to avoid such sharing.

Note that we can't enable the new test method permanently yet, because we
currently go back and forth between fast mode and slow mode when adding an
accessor and break this invariant temporarily. This will be handled in a
separate CL.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10744 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-20 08:42:18 +00:00
mstarzinger@chromium.org
e2ec183926 Fix String.prototype.split for undefined separator.
R=rossberg@chromium.org
TEST=test262/S15.5.4.14_A?_T?

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10743 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-20 08:41:13 +00:00
fschneider@chromium.org
ca1610e302 Add missing checks for failure after AddElementsTransition.
Review URL: https://chromiumcodereview.appspot.com/9416058

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10742 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-17 16:02:20 +00:00
svenpanne@chromium.org
f06b182f8e Moved access checks out of Dictionary class.
The checks were at the wrong abstraction level, JSObject is the right place for
this check. Note that other uses of ValueAtPut either don't need a check at all
(like the one used for copying boilerplate) or do the check for themselves.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10741 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-17 13:48:43 +00:00
ulan@chromium.org
fd2d480fb0 Rename static methods to avoid shadowing virtual methods
and fix Clang C++11 compile error.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10739 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-17 12:59:58 +00:00
mstarzinger@chromium.org
e423637898 Fix sequence of element access in array builtins.
R=rossberg@chromium.org
BUG=v8:1790
TEST=mjsunit/regress/regress-1790,test262/15.4.4.22-9-9

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10737 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-17 10:06:26 +00:00
mstarzinger@chromium.org
1dd2b094a5 Implement fast literal support in Crankshaft.
This extends the current support for nested object literals we already
have in Crankshaft, to also support nested array literals and mixed
nested literals containing arrays and objects. All three types are
generated by the unified HFastLiteral instruction.

All previous upper bounds on nested literal graphs remain unchanged,
keeping the size of generated code in check.

The main intention is to boost performance of two-dimensional array
literals containing constant elements (aka. matrices).

R=danno@chromium.org
TEST=mjsunit/compiler/literals-optimized

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10734 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-16 17:32:30 +00:00
mstarzinger@chromium.org
15c368ce4c Revert r10721 because of test flakiness.
TBR=fschneider@chromium.org
BUG=v8:1322

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10733 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-16 17:13:37 +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
danno@chromium.org
a07e129e9a Relax TransitionElementsKind DependsOn/Changes dependencies.
Ensure that GVN eliminates all transitions that are dominated by an equivalent transition, even if there is a DependsOn-changing instruction in between.

R=fschneider@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10731 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-16 15:37:52 +00:00
yangguo@chromium.org
0ee19e40b1 Prepare push to trunk. Now working on version 3.9.8.
R=jkummerow@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10728 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-16 15:30:43 +00:00
vegorov@chromium.org
b6551b83a5 Increase ARM/MIPS simulators stack safety margin to 1024 bytes
Based on r9686 (10e1ea5).

BUG=
TEST=mozilla regress-355497.js

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10722 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-16 14:16:12 +00:00
mstarzinger@chromium.org
acb83c06f4 Allow inlining of functions containing function literals.
R=fschneider@chromium.org
BUG=v8:1322
TEST=mjsunit/compiler/inline-literals

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10721 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-16 14:01:41 +00:00
jkummerow@chromium.org
0199492d57 MIPS: Initial support for count-based profiling
Port r10699 (18a0fc0).

Original commit message:

(behind FLAG_count_based_interrupts; only on ia32)

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10720 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-16 13:33:37 +00:00
yangguo@chromium.org
cc2780403a Ensure using byte registers for byte instructions on ia32 and x64.
BUG=v8:1945
TEST=regress-1945.js

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10719 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-16 12:48:02 +00:00
danno@chromium.org
dd95fee084 Cast NaN to float in ExternalFloatArray::SetValue.
TBR=mstarzinger@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10718 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-16 09:36:11 +00:00
fschneider@chromium.org
596a0fa73c MIPS: Re-worked the deopt entry table.
This method works around the Branch offset and relocinfo issues by emulating a pc-relative jump.
This allows us to generate larger entry tables. The theoretical limit is 2^16 (number of entries)
but even that can be extended by allowing a larger instruction count.

Also reverted the mips-specific constant (kNumberOfEntries) in deoptimizer.h

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10717 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-16 08:38:25 +00:00
jkummerow@chromium.org
1cd5f2c7ba Fix GCC-4.7 warnings
which were introduced in r10700.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10716 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-16 08:38:11 +00:00
danno@chromium.org
bd79e299e5 Uniformly handle 'undefined' store to Float64Array and Float32Array.
Previous behavior diverged in ICs and Crankshaft. When storing to a Float32Array or Float64Array, the ICs treated undefined as zero while Crankshaft treated it as NaN. Now both ICs and Crankshaft treat it as NaN, which is consistent with the WebGL & ECMAScript spec.

R=mstarzinger@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10714 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-16 07:58:07 +00:00
yangguo@chromium.org
01e46b955f Initialize internal arrays with the correct map.
BUG=v8:1878
TEST=regress-1878.js

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10712 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-15 13:45:42 +00:00
yangguo@chromium.org
b21ada9a98 Remove unnecessary elements type check when allocating array in runtime.
BUG=
TEST=--smi-only-arrays should be perf-neutral to allocating big arrays in a tight loop.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10711 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-15 12:13:55 +00:00
rossberg@chromium.org
f2715fe710 MIPS: Split AST Declaration class, in preparation for new module declaration forms.
Port r10662 (c8054f6).

Original commit message:

Turns Declaration into an abstract class, and introduces VariableDeclaration as a concrete subclass.

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10709 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-14 16:07:47 +00:00
jkummerow@chromium.org
8ac0c1cdf2 Properly disable count-based profiler on non-ia32
TEST=buildbot redness gone

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10708 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-14 16:05:40 +00:00
danno@chromium.org
b098a2bdf6 MIPS: Implement KeyedStoreICs to grow arrays on out-of-bound stores.
Port r10673 (18d3af5).

Original commit message:
Supports growing non-COW JSArray by a single element if the backing store has room, and initial allocation of a backing store for the store to index zero of an empty array  to kPreallocatedArrayElements elements (e.g. the [] array literal).

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10707 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-14 15:49:10 +00:00
danno@chromium.org
71cd77e22c Fix crashing bugs in store-and-grow IC for double values.
R=jkummerow@chromium.org
BUG=chromium:113924
TEST=test/mjsunit/regress/regress-113924.js

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10706 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-14 15:09:49 +00:00
jkummerow@chromium.org
82a1adcb69 Reapply r10690 ("Temporarily disable inlining of Math.floor called as a function")
This reverts r10692.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10702 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-14 14:40:58 +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
fschneider@chromium.org
0be449d684 Enable optimization of top-level code and generate deoptimization support lazily.
This change enables optimization of top-level and eval-code. For this to work, it adds
support for declaring global variables in optimized code.

At the same time it disables the eager generation of deoptimization support data
in the full code generator (originally introduced in
 r10040). This speeds up initial compilation and saves 
memory for functions that won't be optimized. It requires
 recompiling the function with deoptimization
 support when we decide to optimize it.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10700 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-14 14:14:51 +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
rossberg@chromium.org
559f5eecad Don't treat function parameters as let-bound variables in Harmony mode.
R=ulan@chromium.org
BUG=v8:1942
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10698 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-14 13:47:54 +00:00
ulan@chromium.org
9da06ece99 Prepare push to trunk. Now working on version 3.9.7.
R=jkummerow@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10695 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-14 11:44:01 +00:00
fschneider@chromium.org
d462550446 Revert r10690. Enable inlining of Math.floor again.
The test failures reported in issue v8:1947 are unrelated to this change since it is not reproducible anymore.

BUG=v8:1947
Review URL: https://chromiumcodereview.appspot.com/9365048

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10692 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-14 10:43:40 +00:00
danno@chromium.org
7a79e3547c objects: fix template-related linker error
R=erik.corry@gmail.com
BUG=1936
TEST=

Review URL: https://chromiumcodereview.appspot.com/9382033
Patch from Fedor Indutny <fedor@indutny.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10691 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-14 09:42:38 +00:00
fschneider@chromium.org
fd4ceab217 Temporarily disable inlining of Math.floor called as a function because of test failures.
BUG=v8:1947
Review URL: https://chromiumcodereview.appspot.com/9359032

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10690 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-14 09:42:31 +00:00
mstarzinger@chromium.org
0db91d40e9 Allow inlining of functions containing object literals.
R=fschneider@chromium.org
BUG=v8:1322
TEST=mjsunit/compiler/inline-literals

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10689 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-14 08:57:10 +00:00
yangguo@chromium.org
ed54dd2042 Port r10674 to MIPS.
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10688 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-14 08:45:32 +00:00
yangguo@chromium.org
36141ddfa3 Fix crash when using --smi-only-arrays and --trace-elements-transitions
BUG=
TEST=3d-cube on debug mode with --smi-only-arrays and --trace-elements-transitions

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10687 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-14 08:38:03 +00:00
svenpanne@chromium.org
0a9e97e9c4 Clear map transitions in CALLBACKS when normalizing properties.
As a bonus, simplify the surrounding code a bit by using the templatized To method.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10686 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-13 14:41:46 +00:00
svenpanne@chromium.org
2a57257940 DescriptorArray::CopyFrom should always drop transitions for CALLBACKS.
Review URL: https://chromiumcodereview.appspot.com/9389005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10685 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-13 14:15:43 +00:00
danno@chromium.org
da2e84fcb2 Fix crash in CALLBACK KeyedIC stub.
TBR=jkummerow@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10684 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-13 13:39:31 +00:00
danno@chromium.org
ad41b9ebc4 Optimize call sites that only ever see a single elements transition
R=jkummerow@chromium.org
TEST=imaging-gaussian-blur performance improves

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10683 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-13 11:37:39 +00:00
yangguo@chromium.org
0801e4c3e0 Port r10674 to x64 and arm.
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10679 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-13 08:21:01 +00:00
yangguo@chromium.org
b06c041448 MIPS: Fixed several bugs in SubStringStub::Generate.
A combination of bugs caused this function to almost always jump to runtime
which is why most tests passed.

BUG=
TEST=sputnik/S15.5.4.13_A2_T6

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10678 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-13 08:17:32 +00:00
jkummerow@chromium.org
7c695dcfa9 MIPS: Count-based profiling for primitive functions (hidden behind a flag)
Port r10657 (92073cf).

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10677 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-10 16:26:55 +00:00
loislo@chromium.org
384cc7fce2 Heap Snapshot maximum size limit is too low for really big apps.
At the moment the limit is 256MB.

BUG=113015
TEST=none

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10676 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-10 14:00:16 +00:00
yurys@chromium.org
97cbb319bd Provide user-friendly access to natively bound function parameters
For a closure created using native Function.prototype.bind() the most important information for the heap profiler user is bound function, receiver and arguments. This change adds shortcuts for those fields.
Review URL: https://chromiumcodereview.appspot.com/9382002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10675 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-10 13:54:20 +00:00
danno@chromium.org
eb71dfee89 Implement elements transitions in ia32 Array constructor with n args.
R=yangguo@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10674 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-10 12:41:48 +00:00
danno@chromium.org
f0c4b87f34 Implement KeyedStoreICs to grow arrays on out-of-bound stores.
Supports growing non-COW JSArray by a single element if the backing store has room, and initial allocation of a backing store for the store to index zero of an empty array  to kPreallocatedArrayElements elements (e.g. the [] array literal).

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10673 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-10 12:36:05 +00:00
yangguo@chromium.org
e74b57317b Fix crashes on x64 with smi-only arrays active.
Review URL: https://chromiumcodereview.appspot.com/9384002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10672 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-10 12:28:25 +00:00
kmillikin@chromium.org
581b7e6eb2 Streamline throwing in the C entry stub.
Remove a gratuitous level of indirection in favor of direct calls to the
macro assembler, and eliminate some duplicated code for the uncatchable
case.

R=fschneider@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10671 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-10 08:47:35 +00:00
kmillikin@chromium.org
f8421446e2 Small cleanup of ast.h.
Somehow the definition of DECLARE_NODE_TYPE was duplicated and never undef'd.

R=jkummerow@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10670 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-10 08:35:57 +00:00
rossberg@chromium.org
0fa948d19e Make constructors explicit.
R=jkummerow@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10666 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-09 13:54:45 +00:00
yangguo@chromium.org
eae54f2a54 Prepare push to trunk. Now working on version 3.9.6.
R=jkummerow@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10664 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-09 13:49:30 +00:00
rossberg@chromium.org
5498a6345a Extend AST with basic module constructs (yet unused).
R=jkummerow@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10663 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-09 13:40:41 +00:00
rossberg@chromium.org
751508d6aa Split AST Declaration class, in preparation for new module declaration forms.
Turns Declaration into an abstract class, and introduces VariableDeclaration as a concrete subclass.

R=kmillikin@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10662 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-09 13:39:26 +00:00
yangguo@chromium.org
d7934bd44c MIPS: Convert fast smi-only to fast object in generated code for array push.
Port r10648 (818a1aa).

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10661 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-09 13:32:11 +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
danno@chromium.org
1588f7224e Revert 9111036: Promote double arrays to FAST_ELEMENT that use generic KeyedLoadIC
It tanked Kraken.

TBR=jkummerow@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10659 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-09 13:07:46 +00:00
svenpanne@chromium.org
96cad0d9f0 Handlify GetSourceCode-related functions.
Review URL: https://chromiumcodereview.appspot.com/9374013

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10658 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-09 10:46:50 +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
svenpanne@chromium.org
fdf31d1bff Cleaned up DescriptorArray::CopyInsert a bit.
The point of this refactoring is to remove some copy 'n' paste from the code,
preparing some upcoming changes related to CopyFrom and CALLBACKS with
transitions. The index fiddling is tricky enough to warrant a separate
refacoring-only CL...

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10656 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-09 09:55:14 +00:00
kmillikin@chromium.org
831ada2f0d Simplify handler pushing.
Instead of using two separate bits to encode three possible values, use
three values to encode the three possible values.

R=svenpanne@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10654 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-09 09:43:37 +00:00
mstarzinger@chromium.org
34f220001d Simplify stackframe of construct stub on ARM and MIPS.
This unifies the stackframe layout of the generic constructor stub to be
in sync with ia32 and x64. There was an unecessary copy of the construct
function saved on the stack which wasn't used at all.

R=erik.corry@gmail.com

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10653 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-09 09:13:31 +00:00
danno@chromium.org
d89c0b9500 Promote double arrays to FAST_ELEMENT that use generic KeyedLoadIC
Review URL: https://chromiumcodereview.appspot.com/9111036

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10652 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-09 09:11:04 +00:00
danno@chromium.org
d949c64688 Improve GVN handling of ElementTransitions.
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10651 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-09 08:58:19 +00:00
yangguo@chromium.org
d714d8511b Convert fast smi-only to fast object in generated code for array push.
Review URL: https://chromiumcodereview.appspot.com/9365020

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10648 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-08 17:05:59 +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