Commit Graph

8807 Commits

Author SHA1 Message Date
yangguo@chromium.org
f02af74575 Cleanup StringCharacterStream and add initial test cases.
BUG=

Review URL: https://chromiumcodereview.appspot.com/11438046
Patch from Dan Carney <dcarney@google.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13189 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-11 10:22:15 +00:00
yangguo@chromium.org
72dfb27909 Fire 'stack' getter of error objects after GC.
BUG=v8:2340

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13188 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-11 10:14:01 +00:00
peter.rybin@gmail.com
0b5359bf87 Allow all value types in evaluate additional context
Review URL: https://codereview.chromium.org/11448030

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13187 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-10 22:02:26 +00:00
jkummerow@chromium.org
8bf5878453 Prepare push to trunk. Now working on version 3.15.12.
R=yangguo@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13184 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-10 18:58:32 +00:00
mmassi@chromium.org
3b0ee64664 Revert r13176.
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13182 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-10 12:55:50 +00:00
jkummerow@chromium.org
d1cbd1a98c Flush out potential leaks of Failure objects
Review URL: https://codereview.chromium.org/11475027

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13181 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-10 12:18:54 +00:00
jkummerow@chromium.org
35cd58365d Make sure HMathMinMax always has a supported representation
Review URL: https://codereview.chromium.org/11467021

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13180 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-10 12:10:23 +00:00
danno@chromium.org
64fc1f99cb Revert 13157, 13145 and 13140: Crankshaft code stubs.
R=jkummerow@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13179 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-10 11:09:12 +00:00
yangguo@chromium.org
c70a0f9334 Improve integer division on IA32 and X64
If the divisor is a Power-of-2 constant, we could use shifts instead of the
expensive idiv instructions, which also loose the register constraints.

Review URL: https://chromiumcodereview.appspot.com/11478043
Patch from Yuqiang Xian <yuqiang.xian@intel.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13178 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-10 11:02:22 +00:00
rossberg@chromium.org
9a0623f296 Object.observe support for Function 'prototype' property
BUG=v8:2409

Review URL: https://codereview.chromium.org/11416353
Patch from Adam Klein <adamk@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13177 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-10 10:53:57 +00:00
mmassi@chromium.org
1aa2891ca4 Make keyed operations use the unchecked index but still depend on the checked one.
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13176 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-10 08:56:24 +00:00
svenpanne@chromium.org
608bce5023 Remove SlidingStateWindow and related code.
Review URL: https://codereview.chromium.org/11441034

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13172 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-07 13:47:42 +00:00
svenpanne@chromium.org
6770c02fc4 Removed dead InterruptFlag enum value.
Review URL: https://codereview.chromium.org/11446064

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13171 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-07 13:09:39 +00:00
rossberg@chromium.org
4d73627313 Handlify JSObject::SetDictionaryElement, which may call back into JS.
Fixes flaky crasher in proxies.js test.

R=mstarzinger@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13169 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-07 12:58:09 +00:00
rossberg@chromium.org
2723471462 Prepare push to trunk. Now working on version 3.15.11.
R=jkummerow@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13164 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-07 12:38:22 +00:00
yangguo@chromium.org
d6629c6919 Fix mozilla test failures and expectations.
Follow-up for r13160.

R=mstarzinger@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13163 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-07 12:18:50 +00:00
ulan@chromium.org
c5c8276f59 Improve double to integer truncation on ARM.
BUG=none
TEST=none

Review URL: https://chromiumcodereview.appspot.com/11412272
Patch from Rodolph Perfetta <rodolph.perfetta@gmail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13162 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-07 11:29:27 +00:00
rossberg@chromium.org
3348b5c2b4 Allow lazy compilation (and thus optimisation) of functions inside eval.
For strict-mode eval, this requires _disabling_ lazy parsing of inner functions,
because we need to collect their free variables to do allocation for the
eval scope properly.

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

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13161 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-07 10:35:50 +00:00
yangguo@chromium.org
3388f92e63 Fix spec violations in methods of Number.prototype.
R=svenpanne@chromium.org
BUG=v8:2443

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13160 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-07 10:20:35 +00:00
mstarzinger@chromium.org
eeca7c7759 Add GCTracer metrics for a scavenger GC for DOM wrappers
This patch adds the following three metrics for the --trace_gc_nvp option.

nodes_died_in_new_space_; // Number of died nodes in the new space.
nodes_copied_in_new_space_; // Number of copied nodes to the new space.
nodes_promoted; // Number of promoted nodes to the old space.

BUG=
TEST=Manually confirmed that the "--trace_gc --trace_gc_nvp" option prints the metrics

Review URL: https://codereview.chromium.org/11365146
Patch from Kentaro Hara <haraken@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13159 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-07 09:44:10 +00:00
svenpanne@chromium.org
17def81fc9 Use count-based profiling exclusively.
Review URL: https://codereview.chromium.org/11437016

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13158 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-07 08:55:06 +00:00
mstarzinger@chromium.org
19444dcff3 Prepare push to trunk. Now working on version 3.15.10.
R=jkummerow@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13154 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-06 17:27:53 +00:00
mstarzinger@chromium.org
31f1f2de22 Fix candidate eviction in code flusher.
This fixes a corner case where a code flushing candidate was evicted
from the candidate list without being revisited by the incremental
marker. An explicit write-barrier makes sure it gets revisited.

R=ulan@chromium.org
BUG=chromium:159140
TEST=cctest/test-heap/Regress159140

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13153 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-06 16:27:32 +00:00
verwaest@chromium.org
064bb33fdd Let marking speed depend on the actual incremental write barrier count.
Review URL: https://chromiumcodereview.appspot.com/11441011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13152 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-06 15:51:42 +00:00
yangguo@chromium.org
276c790c61 Iterate through all arguments for side effects in Math.min/max.
R=svenpanne@chromium.org
BUG=v8:2444

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13150 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-06 13:13:38 +00:00
mstarzinger@chromium.org
32aaed95a0 Report deoptimization error in release mode.
This makes sure that we crash and burn in release mode in cases where
the deoptimizer is unable to find the PC offset into unoptimized code
during deoptimization. So far this failure got swallowed in production.

R=ulan@chromium.org
BUG=chromium:159140

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13148 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-06 12:43:05 +00:00
yangguo@chromium.org
a2d0b05a11 Add StringBufferStream
add a class StringBufferStream which will replace
StringInputBuffer and SafeStringInputBuffer and requires no
ascii/two byte encoding scheme

R=yangguo@chromium.org
BUG=

Review URL: https://chromiumcodereview.appspot.com/11428106
Patch from Dan Carney <dcarney@google.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13147 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-06 11:49:15 +00:00
yangguo@chromium.org
424a492dde Take instrumentation overhead into account when plotting.
R=jkummerow@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13146 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-05 16:22:14 +00:00
danno@chromium.org
84f2454eac Fix isolate bug introduced by generated code stubs
Review URL: https://codereview.chromium.org/11441013

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13145 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-05 16:16:32 +00:00
yangguo@chromium.org
c75ca45000 Improve array to string conversion.
BUG=v8:2435

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13144 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-05 15:49:22 +00:00
yangguo@chromium.org
6c92aba643 Fix spec violations related to regexp.lastIndex
BUG=v8:2437, v8:2438

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13143 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-05 12:32:25 +00:00
rossberg@chromium.org
6b16d0bcae Make Object.observe on the global object functional
The approach in this change is to handle the unwrapping/wrapping of the global object transparently with respect to the JS implementation of Object.observe. An alternate approach would be to add a runtime method like %IsJSGlobalProxy and %UnwrapJSGlobalProxy, but it seems ugly to give JS (even implementation JS) access to the unwrapped global.

BUG=v8:2409

Review URL: https://codereview.chromium.org/11414094
Patch from Adam Klein <adamk@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13142 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-05 12:03:57 +00:00
rossberg@chromium.org
23850c16b2 Object.observe: notify of __proto__ changes
BUG=v8:2409

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13141 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-05 11:47:45 +00:00
danno@chromium.org
f19959cd22 Enable stub generation using Hydrogen/Lithium (again)
This initial implementation generates only KeyedLoadICs using the new Hydrogen stub infrastructure.

Committed: https://code.google.com/p/v8/source/detail?r=13105

Committed: https://code.google.com/p/v8/source/detail?r=13117

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13140 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-05 11:04:10 +00:00
mstarzinger@chromium.org
e46b251324 Pass Isolate to MakeWeak(), IsWeak(), and AddObjectGroup().
BUG=
TEST=cctest/test-api/ApiObjectGroupsCycle

Review URL: https://codereview.chromium.org/11360082
Patch from Kentaro Hara <haraken@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13139 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-05 10:14:10 +00:00
mstarzinger@chromium.org
0e3fece02d Pass Isolate to Local<T>::New()
Our profiling revealed that Local<T>::New() is one of bottlenecks of DOM bindings.

BUG=
TEST=cctest/test-api/LocalHandle

Review URL: https://codereview.chromium.org/11316331
Patch from Kentaro Hara <haraken@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13138 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-05 09:13:53 +00:00
yurys@chromium.org
cec0745aa2 Introduce callback for resolving global object name while taking heap snapshot
Heap profiler currently gets "document" of global objects while taking snapshot (to later retrieve its "URL"). This is unsafe as there may be no current v8 context when the property is requested while corresponding property accessor may make some assumptions about the context stack during its invokation. Several crashes were reported due to this problem:
https://bugs.webkit.org/show_bug.cgi?id=103076
https://crbug.com/162121
https://crbug.com/132727

This patch adds a callback for resolving global object names and avoid the crashes.
Review URL: https://codereview.chromium.org/11415203

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13137 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-04 17:17:55 +00:00
yangguo@chromium.org
e6d4b7709f Remove some dead code.
R=mstarzinger@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13136 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-04 15:30:22 +00:00
mmassi@chromium.org
67375171bf Prepare push to trunk. Now working on version 3.15.9.
R=danno@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13132 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-04 13:49:22 +00:00
mstarzinger@chromium.org
5966276d56 Change deprecated semantics of function template signatures.
This changes how FunctionTemplate interprets a Signature that specifies
compatible receivers and arguments. Only the hidden prototype chain will
be considered when searching for compatible receivers. This prevents
JavaScript from modifying the inheritance relationship set up by the
embedder.

R=rossberg@chromium.org
BUG=v8:2268
TEST=cctest/test-api

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13131 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-04 13:45:48 +00:00
mstarzinger@chromium.org
b21cf0208f Fix external exceptions in external try-catch handlers.
This tries to propagate exceptions which are externally thrown into
external try-catch handlers before scheduling them. This also allows
embedders to nest external try-catch handlers.

This just relands r11834.

R=svenpanne@chromium.org
BUG=v8:2166
TEST=cctest/test-api/TryCatchNested

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13129 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-04 10:45:59 +00:00
mstarzinger@chromium.org
a4c4862ed8 Unify object groups iteration in global handles.
This unifies the iteration logic of objects groups iteration in global
handles. The scavenger as well as mark-and-compact now rely on the same
underlying logic.

R=ulan@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13128 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-04 10:23:43 +00:00
yangguo@chromium.org
b01282710f Fix gcmole offenders.
R=mstarzinger@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13127 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-04 10:15:19 +00:00
yangguo@chromium.org
192d21b5dd Remove bogus test and add check for OOM in TryCall.
R=mstarzinger@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13126 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-04 09:51:52 +00:00
danno@chromium.org
9598ccd851 Remove extraneous forced rejuvenations in code aging
R=mstarzinger@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13125 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-04 08:58:59 +00:00
danno@chromium.org
2bb49cb1e2 Deactive code aging due to regressions
R=svenpanne@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13124 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-04 08:16:24 +00:00
peter.rybin@gmail.com
be4418bae0 Issue 2429, core implementation and the protocol change
Review URL: https://codereview.chromium.org/11421100

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13123 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-03 21:47:39 +00:00
peter.rybin@gmail.com
4b3e67070e Issue 2399 part 1: In debugger allow modifying local variable values
Review URL: https://codereview.chromium.org/11415042

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13122 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-03 20:29:29 +00:00
yangguo@chromium.org
79643009dd Fix null dereference after OOM.
R=mstarzinger@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13121 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-03 17:57:17 +00:00
danno@chromium.org
66f6a8182c Revert 13117: "Enable stub generation using Hydrogen/Lithium (again)"
TBR=mstarzinger@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13120 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-03 17:16:51 +00:00
yangguo@chromium.org
702cc25def Optimize non-ASCII string splitting with single-character search pattern
Review URL: https://chromiumcodereview.appspot.com/11299163
Patch from Ben Noordhuis <ben@c9.io>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13119 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-03 16:48:17 +00:00
yangguo@chromium.org
00bde58530 Fix JSON stringify.
R=verwaest@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13118 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-03 16:23:30 +00:00
danno@chromium.org
78b09625d5 Enable stub generation using Hydrogen/Lithium (again)
This initial implementation generates only KeyedLoadICs using the new Hydrogen stub infrastructure.

Committed: https://code.google.com/p/v8/source/detail?r=13105

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13117 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-03 15:51:05 +00:00
ulan@chromium.org
8a1a926e07 Correctly handle AdjustAmountOfExternalAllocatedMemory(0).
R=yangguo@chromium.org
BUG=v8:2440

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13114 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-03 14:31:11 +00:00
ulan@chromium.org
45fc19124f ARM: make MacroAssembler::LoadRoot emit exactly one instruction when in predictable code size scope.
BUG=v8:2439
R=danno@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13113 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-03 13:40:37 +00:00
mstarzinger@chromium.org
06038fb6a5 Activate incremental code flushing by default.
R=danno@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13112 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-03 13:39:21 +00:00
rossberg@chromium.org
45f42b04c1 When notifying observers of a truncated array, don't call getters on deleted element indices
BUG=v8:2409

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13110 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-03 13:34:08 +00:00
danno@chromium.org
ecdbe77686 ARM: fix a bug with saving lr register in GenerateSmiToDouble.
BUG=163197
R=danno@chromium.org

Review URL: https://chromiumcodereview.appspot.com/11419255
Patch from Ulan Degenbaev <ulan@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13107 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-30 20:58:51 +00:00
danno@chromium.org
0a3bcc8c05 Revert 13105: "Enable stub generation using Hydrogen/Lithium."
TBR=jkummerow@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13106 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-30 17:45:45 +00:00
danno@chromium.org
c115ff4e33 Enable stub generation using Hydrogen/Lithium.
This initial implementation generates only KeyedLoadICs using the new Hydrogen stub infrastructure.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13105 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-30 17:31:30 +00:00
jkummerow@chromium.org
bd69d3d5c3 Revert "Perform CPU sampling by CPU sampling thread only iff processing thread is not running."
This reverts r12985.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13104 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-30 10:26:21 +00:00
svenpanne@chromium.org
781f5aa029 Prepare push to trunk. Now working on version 3.15.8.
R=mstarzinger@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13100 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-30 10:11:44 +00:00
mstarzinger@chromium.org
ff5e63761e Revert "Allow incremental marking when expose_gc is turned on."
This reverts r13072 from bleeding edge.

R=hpayer@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13099 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-30 09:42:20 +00:00
verwaest@chromium.org
cfd4a240ef Pass FixedArrayBase in elements.cc.
This avoids casting problems in case of empty_fixed_array as
FixedDoubleArray with size 0. This avoids prematurely shortcutting in
case of 0 all over the place, which in turn leads to errors.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13098 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-29 15:58:16 +00:00
verwaest@chromium.org
349afd692d Use generic array functions to setup the boilerplate to avoid logic duplication.
Review URL: https://chromiumcodereview.appspot.com/11361281

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13097 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-29 15:55:27 +00:00
danno@chromium.org
5a40f006f9 Remove unused private member variables found by clang -Wunused-private-field
Review URL: https://codereview.chromium.org/11414207
Patch from Adam Klein <adamk@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13096 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-29 15:13:49 +00:00
jkummerow@chromium.org
7cc61deafa Fix typo in FunctionTemplate::ReadOnlyPrototype.
Contributed by Peter Varga <pvarga@inf.u-szeged.hu>

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13095 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-29 14:53:44 +00:00
svenpanne@chromium.org
499ad291be Activate code aging by default.
Review URL: https://codereview.chromium.org/11411257

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13094 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-29 14:31:38 +00:00
yangguo@chromium.org
6951a5faef MIPS: Also time external callbacks from generated code.
Port r13078 (73f25483)

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/11316236
Patch from Akos Palfi <palfia@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13093 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-29 14:04:27 +00:00
jkummerow@chromium.org
b43ec5112f MIPS: Faster implementation of Math.exp()
Port r13054 (636985d7)

BUG=
TEST=

Review URL: https://codereview.chromium.org/11415192
Patch from Akos Palfi <palfia@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13089 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-29 09:22:08 +00:00
jkummerow@chromium.org
bea4580fa8 MIPS: Fix register confusion in non-VFP3 BinaryOpStubs on ARM
Port r12980 (13380d3b)

BUG=
TEST=

Review URL: https://codereview.chromium.org/11308158
Patch from Akos Palfi <palfia@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13088 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-29 09:14:52 +00:00
jkummerow@chromium.org
d2fbb819a1 MIPS: DoNumberTagD performance improvement
Port r12711 (a8d45ac2)

Original commit message:
Allocate heap entry untagged and tag at end to avoid having to subtract off
the tag offset before storing the value.

BUG=
TEST=

Review URL: https://codereview.chromium.org/11280106
Patch from Akos Palfi <palfia@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13087 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-29 09:12:31 +00:00
jkummerow@chromium.org
273b97f9b4 MIPS: ARM: Fast path for integer inputs to EmitVFPTruncate
Port r12676 (7d5e7e81)

BUG=
TEST=

Review URL: https://codereview.chromium.org/11308134
Patch from Akos Palfi <palfia@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13086 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-29 09:09:39 +00:00
verwaest@chromium.org
a74d30f0df MIPS: Only fill in holes if storing the number to the double array has succeeded.
Port r13067 (c822cffa)

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/11428068
Patch from Akos Palfi <palfia@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13085 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-29 08:40:39 +00:00
verwaest@chromium.org
d84ebd3940 MIPS: Ensure we do not clobber the register holding the elements backing store.
Port r13061 (83bb6fcc)

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/11316235
Patch from Akos Palfi <palfia@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13084 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-29 08:39:44 +00:00
verwaest@chromium.org
7ceeb471f7 MIPS: Ensure double arrays are filled with holes when extended from variations of empty arrays.
Port r13056 (9b2c1725)

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/11411253
Patch from Akos Palfi <palfia@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13083 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-29 08:37:41 +00:00
verwaest@chromium.org
7553f0d68e CopyPackedSmiToDoubleElements should fill the FixedDoubleArray with holes
BUG=v8:2433

Review URL: https://chromiumcodereview.appspot.com/11280223
Patch from Adam Klein <adamk@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13082 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-29 08:34:19 +00:00
svenpanne@chromium.org
5a4e0f1c79 Simplify and fix code aging.
Making the code size predictable is hard, and to make things even more
complicated, the start of a function can contain various stuff like calls to a
profiling hook, receiver adjustment or dynamic frame alignment. Instead of
tackling all these problems separately, we now simply record the offset where
patching should happen later in the Code object itself.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13081 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-29 07:38:00 +00:00
mstarzinger@chromium.org
50dcf96e63 Remove bogus assertion from idle notification.
Callbacks that run after garbage collection might fire a context dispose
notification and hence increse the counter before we actually reach this
position.

R=ulan@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13080 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-28 17:56:17 +00:00
mstarzinger@chromium.org
32cf38b81c Improve debug printing of non-strict arguments object.
R=verwaest@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13079 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-28 15:11:38 +00:00
yangguo@chromium.org
432be2c8fd Also time external callbacks from generated code.
R=jkummerow@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13078 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-28 15:11:21 +00:00
vegorov@chromium.org
18d987e505 Relax restrictions on CONSTANT_FUNCTION descriptors in TransformPropertiesToFastFor.
Since r10174 they are not required to be in new space.

R=danno@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13077 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-28 14:02:30 +00:00
yangguo@chromium.org
028f85a244 Include more information in --prof log.
Main changes:
- include timestamps in profile ticks
- include code kind in code create events
- time execution in external code
- changed plot-timer-events.js to show the code kind being executed

R=jkummerow@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13074 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-28 11:01:10 +00:00
hpayer@chromium.org
5a6c1e5109 Fixed pointer arithmetic in write barrier for large objects when marking progress bar is used.
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13073 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-28 10:53:39 +00:00
hpayer@chromium.org
c772d649cf Allow incremental marking when expose_gc is turned on.
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13072 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-28 08:43:10 +00:00
verwaest@chromium.org
09b1574baa Make ElementsAccessors more tolerant of varying backing store types
This avoids bogus calls to Fixed*Array::cast() when FastElements-backed objects are empty (and thus backed by empty_fixed_array).

Review URL: https://chromiumcodereview.appspot.com/11299190
Patch from Adam Klein <adamk@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13071 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-28 08:41:45 +00:00
verwaest@chromium.org
e4be39edef Properly handle-ify method calls to map() and GetLocalElementAccessorPair()
These are likely causing some of the flaky crashes in Object.observe code. I've reorganized some of the code to minimize the number of necessary calls to map() (by saving the result of map()->is_observed() in a local bool).

Also move down an unnecessarily early call to Uint32ToString when sending an element deletion notification.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13070 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-28 08:35:46 +00:00
mstarzinger@chromium.org
d8922dd6f4 Move assertion about stopped marking up (again).
Weak persistent handle callbacks might trigger nested GCs that in turn
can cause marking to be restarted. The assertion needs to hold before
firing callbacks only.

R=ulan@chromium.org
TEST=cctest/test-api --stress-compaction

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13069 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-27 17:03:12 +00:00
verwaest@chromium.org
5ef423b6d7 Only fill in holes if storing the number to the double array has succeeded.
Review URL: https://chromiumcodereview.appspot.com/11299200

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13067 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-27 13:27:15 +00:00
mstarzinger@chromium.org
3b291a0f48 Fix incremental marking to be off during heap snapshots.
The heap snapshot generator uses the UnreachableObjectsFilter which in
turn messes with marking bits. This requires incremental marking to be
turned off while the snapshot is being generated.

R=verwaest@chromium.org
TEST=cctest/test-heap-profiler --stress-compaction

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13066 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-27 13:18:55 +00:00
verwaest@chromium.org
1b0e373f09 Avoid double initialization of arrays.
Review URL: https://chromiumcodereview.appspot.com/11413179

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13064 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-27 12:01:14 +00:00
hpayer@chromium.org
865828f37e Forward white to grey transition only if slot is before the progress bar of a given object.
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13063 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-26 16:16:49 +00:00
mvstanton@chromium.org
ec49191302 MIPS: Fix MIPS port of r13032 (25d0edd7).
This commit fixes a small typo in r13032 (25d0edd7).

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13062 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-26 16:14:49 +00:00
verwaest@chromium.org
beeb751278 Ensure we do not clobber the register holding the elements backing store.
Review URL: https://chromiumcodereview.appspot.com/11316168

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13061 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-26 15:58:27 +00:00
hpayer@chromium.org
395db15950 Remove eager sweeping for lazy swept spaces. Try to find in SlowAllocateRaw a bounded number of times a big enough memory slot.
BUG=v8:2194

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13058 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-26 14:50:20 +00:00
danno@chromium.org
569b9c4cf0 Prepare push to trunk. Now working on version 3.15.7.
R=jkummerow@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13057 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-26 14:49:57 +00:00
verwaest@chromium.org
ebeaad6cb5 Ensure double arrays are filled with holes when extended from variations of empty arrays.
BUG=162085

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13056 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-26 14:29:21 +00:00
jkummerow@chromium.org
79563b22c9 Faster implementation of Math.exp()
Review URL: https://codereview.chromium.org/11418149

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13054 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-26 13:12:35 +00:00
rossberg@chromium.org
93579d9d3e Make indexed intercepted methods enumerable by default.
R=ulan@chromium.org
BUG=162606

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13053 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-26 12:55:47 +00:00
ulan@chromium.org
735d052f4c Remove unused heap debug utils code.
This functionality is already implemented by PathTracer.

R=mstarzinger@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13052 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-26 10:23:16 +00:00
yangguo@chromium.org
94476cb89a Also time other API functions calling into javascript.
And prevent crash when starting chromium without --single-process.

BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13051 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-26 08:56:59 +00:00
yangguo@chromium.org
3c251ec924 Fix valgrind warnings.
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13050 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-26 08:47:48 +00:00
rossberg@chromium.org
5593b956b2 Censor .caller if it is a strict function instead of throwing.
For details, see:

http://www.mail-archive.com/es-discuss@mozilla.org/msg19322.html
https://bugs.ecmascript.org/show_bug.cgi?id=310

R=mstarzinger@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13049 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-23 15:47:58 +00:00
rossberg@chromium.org
1090d8e0dc MIPS: Get rid of static module allocation, do it in code.
Port r13033 (58c2efbb)

BUG=
TEST=

Review URL: https://codereview.chromium.org/11413146
Patch from palfia <palfia@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13046 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-23 15:39:25 +00:00
ulan@chromium.org
79c10a8c7f Prepare push to trunk. Now working on version 3.15.6.
R=jkummerow@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13043 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-23 14:35:13 +00:00
danno@chromium.org
6db4bc2f4d Force small array literals to have FAST_ELEMENTs
R=verwaest@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13042 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-23 13:23:39 +00:00
yangguo@chromium.org
bebf37799e Fix JSON.stringify for objects with interceptor handlers.
BUG=161028

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13041 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-23 12:32:24 +00:00
hpayer@chromium.org
bbb6d45088 Reset progress bar of object to 0 when RecordWrites changes object color to grey.
BUG=v8:2423

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13040 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-23 12:22:16 +00:00
mmassi@chromium.org
a0582112f8 Revert r13025 and r13026 (they introduced a bug on arm and regressed octane crypto).
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13039 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-23 10:53:03 +00:00
verwaest@chromium.org
2c1ac55213 - Initialize the result array with holes if we concat a double array into an object array, since it may cause a marking step while boxing a double.
- Ensure we go holey if we are concatting any holey array.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13038 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-22 16:22:57 +00:00
svenpanne@chromium.org
9de70742a6 PredictableCodeSizeScope checks the expected size now.
We still have some problems on ARM, so the size check currently
optional. Furthermore, we don't use PredictableCodeSizeScope at all
place where we should do it. Both issues are cleaned up in upcoming
CLs.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13037 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-22 14:59:52 +00:00
yangguo@chromium.org
72db2287c3 Add parallel recompilation time to histogram and plot execution pause times.
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13036 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-22 13:04:11 +00:00
svenpanne@chromium.org
51f5a8e7c7 Moved buffer handling to AssemblerBase.
This removed a lot of copy-n-paste code and is very handy for some upcoming
changes (regarding predictable code size).

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13034 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-22 10:28:29 +00:00
rossberg@chromium.org
ce05280bfc Get rid of static module allocation, do it in code.
Modules now have their own local scope, represented by their own context.
Module instance objects have an accessor for every export that forwards
access to the respective slot from the module's context. (Exports that are
modules themselves, however, are simple data properties.)

All modules have a _hosting_ scope/context, which (currently) is the
(innermost) enclosing global scope. To deal with recursion, nested modules
are hosted by the same scope as global ones.

For every (global or nested) module literal, the hosting context has an
internal slot that points directly to the respective module context. This
enables quick access to (statically resolved) module members by 2-dimensional
access through the hosting context. For example,

  module A {
    let x;
    module B { let y; }
  }
  module C { let z; }

allocates contexts as follows:

[header| .A | .B | .C | A | C ]  (global)
          |    |    |
          |    |    +-- [header| z ]  (module)
          |    |
          |    +------- [header| y ]  (module)
          |
          +------------ [header| x | B ]  (module)

Here, .A, .B, .C are the internal slots pointing to the hosted module
contexts, whereas A, B, C hold the actual instance objects (note that every
module context also points to the respective instance object through its
extension slot in the header).

To deal with arbitrary recursion and aliases between modules,
they are created and initialized in several stages. Each stage applies to
all modules in the hosting global scope, including nested ones.

1. Allocate: for each module _literal_, allocate the module contexts and
   respective instance object and wire them up. This happens in the
   PushModuleContext runtime function, as generated by AllocateModules
   (invoked by VisitDeclarations in the hosting scope).

2. Bind: for each module _declaration_ (i.e. literals as well as aliases),
   assign the respective instance object to respective local variables. This
   happens in VisitModuleDeclaration, and uses the instance objects created
   in the previous stage.
   For each module _literal_, this phase also constructs a module descriptor
   for the next stage. This happens in VisitModuleLiteral.

3. Populate: invoke the DeclareModules runtime function to populate each
   _instance_ object with accessors for it exports. This is generated by
   DeclareModules (invoked by VisitDeclarations in the hosting scope again),
   and uses the descriptors generated in the previous stage.

4. Initialize: execute the module bodies (and other code) in sequence. This
   happens by the separate statements generated for module bodies. To reenter
   the module scopes properly, the parser inserted ModuleStatements.

R=mstarzinger@chromium.org,svenpanne@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13033 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-22 10:25:22 +00:00
mvstanton@chromium.org
80819f618d Add dehoisting to the string printout of hydrogen and lithium instructions.
This is nice when looking at hydrogen graphs, to see the real key offset.

R=mmassi@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13032 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-22 10:19:05 +00:00
yangguo@chromium.org
c412264c4a Fix counters in d8.
R=svenpanne@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13031 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-22 08:35:21 +00:00
svenpanne@chromium.org
f275b36299 Reduced TLS accesses even further.
Thread the Isolate through FindCodeInCache, FindCodeInSpecialCache and
SetProperty. Reduced the number of TLS accesses while running the Octane
benchmark down to 19% compared to the beginning of the cleanups.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13030 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-22 07:58:59 +00:00
hpayer@chromium.org
ee164ffe3d Use slot instead of value in the write barrier to record write from code.
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13029 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-22 07:05:20 +00:00
mvstanton@chromium.org
2fed381652 Fix performance regression in DXT5Decoder.js.
R=svenpanne@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13028 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-21 14:01:10 +00:00
mmassi@chromium.org
ce81fb7b13 Fix build (and fix brown paper bug as well...).
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13026 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-21 12:17:18 +00:00
mmassi@chromium.org
5e7f30a596 Use the property load IC for accessing the array length.
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13025 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-21 11:49:15 +00:00
svenpanne@chromium.org
c8bc4db52f Enable deprecations.
In addition, use a more common style in the preprocessor condition, making
e.g. '-DV8_ENABLE_DEPRECATIONS=0' do the expected thing. Removed a useles

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13024 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-21 10:16:07 +00:00
yangguo@chromium.org
36f5b6d41f Rename IsAsciiRepresentation
This is a straight rename:

IsAsciiRepresentation -> IsOneByteRepresentation
IsAsciiRepresentationUnderneath -> IsOneByteRepresentationUnderneath
AllocateRawAsciiString -> AllocateRawOneByteString
AllocateStringFromAscii -> AllocateStringFromOneByte

R=yangguo@chromium.org,
BUG=

Review URL: https://chromiumcodereview.appspot.com/11308066
Patch from Dan Carney <dcarney@google.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13023 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-21 10:01:05 +00:00
verwaest@chromium.org
67c9e9d065 MIPS: Support all fast elements kinds in the major array operations. Currently missing support for unshift.
Port r12969 (b10320d7)

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13022 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-21 09:54:53 +00:00
yangguo@chromium.org
92d3113250 MIPS: Make kAsciiDataHintTag have correct semantics for all both 1 and 2 byte string types.
Port r12966 (ec963fe0)

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/11316091
Patch from Akos Palfi <palfia@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13021 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-21 09:41:34 +00:00
jkummerow@chromium.org
a956594fc2 Fix corner case in x64 compare stubs.
BUG=v8:2416

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13019 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-20 15:57:10 +00:00
svenpanne@chromium.org
7e6dd6db1e Drastically reduce the number of created strings in d8, 2nd attempt.
This also reduces the number of TLS accesses, so it is a double-win. We have
230k less TLS accesses while running Octane now, so we are down to 23% now
compared to the start of these TLS-related CLs.

To get things right in the presence of multiple Isolates, we have to thread the
correct Isolate through several layers. This threading wasn't that bad after
all, it keeps one honest about the real depdencies. The only ugly thing is that
in ExternalArrayWeakCallback we have to conjure up the current Isolate from the
TLS, but this is a know API deficiency.

Introduced a tiny helper function for throwing on the way.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13018 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-20 14:47:56 +00:00
ulan@chromium.org
6a6012c0e7 Emit RSB for subtraction with constant lhs on ARM
Instead of generating the following for "100 - x":

  mov r1, #100
  subs r0, r1, r0

this patch makes Crankshaft generate this:

  rsbs r0, r0, #100

thus saving a register and a mov.

BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13017 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-20 14:46:16 +00:00
rossberg@chromium.org
15dec1ae28 Missing check for exception.
R=mstarzinger@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13015 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-20 14:41:20 +00:00
jkummerow@chromium.org
0620b1d0d7 MIPS: Lattice-based representation inference, powered by left/right specific type feedback for BinaryOps and comparisons
Port r12961 (96c0e493)

BUG=
TEST=

Review URL: https://codereview.chromium.org/11280080
Patch from Akos Palfi <palfia@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13014 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-20 14:11:53 +00:00
jkummerow@chromium.org
8c5bf4a7e0 Fix typo in condition when to log code objects during deserialization.
Review URL: https://codereview.chromium.org/11416068

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13013 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-20 12:59:36 +00:00
rossberg@chromium.org
0f6d0d28dd Fix and clean up treatment of hidden prototypes.
R=mstarzinger@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13012 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-20 12:32:29 +00:00
rossberg@chromium.org
1570d62721 Object.observe/unobserve now return object
BUG=v8:2418

Review URL: https://codereview.chromium.org/11419078
Patch from Rafael Weinstein <rafaelw@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13009 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-20 10:38:14 +00:00
rossberg@chromium.org
75cb024609 Re-adjust access failure log messages for %GetOwnProperty.
R=mstarzinger@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13006 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-19 17:59:11 +00:00
mstarzinger@chromium.org
1f71c3c34e Enable marking progress bar for large objects by default.
R=hpayer@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13005 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-19 17:23:58 +00:00
hpayer@chromium.org
8a6947af13 Forward transition objects to grey if they are referenced by a large object
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13004 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-19 16:20:22 +00:00
verwaest@chromium.org
397f5291ae Always check copy_size before getting accessor and trying to copy.
Review URL: https://chromiumcodereview.appspot.com/11348071

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13001 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-19 15:31:38 +00:00
verwaest@chromium.org
08cfda49f2 Ensure CopyElementsImpl is always executed so it fills in holes even if from_size is 0. Allow FixedDoubleArray::cast to also support FixedArray with size 0.
Review URL: https://chromiumcodereview.appspot.com/11280054

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13000 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-19 15:00:34 +00:00
svenpanne@chromium.org
3326b845e2 Revert "Drastically reduce the number of created strings in d8."
This reverts commit 2fc4424b00296cc06d6f7eb4bf31ec9c3d6be68a.

Even symbols shouldn't be shared across Isolates. The CL has to be reworked to
use a (Isolate,C-string)->v8-symbol mapping. Slowly approaching Chrome... :-/

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12999 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-19 14:46:19 +00:00
yangguo@chromium.org
2b5e6bae60 Fix --hydrogen-stats.
Timing happens in a scope.  Since crankshaft has been chopped up into three methods, this approach is wrong.

BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12998 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-19 14:20:57 +00:00
mstarzinger@chromium.org
f9bc4d3bf2 Fix clang build: remove unused static function
The last call to GetOwnPropertyImplementation() was removed in r12990.

Review URL: https://codereview.chromium.org/11411038
Patch from Adam Klein <adamk@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12997 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-19 09:46:58 +00:00
rossberg@chromium.org
3e8047ec88 Fix sequence point bug.
R=mstarzinger@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12996 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-19 09:43:56 +00:00
yangguo@chromium.org
515c556150 Prepare push to trunk. Now working on version 3.15.5.
R=jkummerow@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12993 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-16 14:41:06 +00:00
yangguo@chromium.org
d2a6e7b40d Fix test failures.
R=jkummerow@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12992 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-16 14:24:19 +00:00
svenpanne@chromium.org
2f5c768534 Drastically reduce the number of created strings in d8.
This also reduces the number of TLS accesses, so it is a double-win. We have
230k less TLS accesses while running Octane now, so we are down to 23% now
compared to the start of these TLS-related CLs.

Introduced a tiny helper function for throwing on the way.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12991 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-16 13:30:43 +00:00
rossberg@chromium.org
8d79ff46d0 Clean-up refactoring to eliminate GetLocalElementKind.
Eliminates substantial amounts of fragile code duplication and special casing.

Also fixes "a".propertyIsEnumerable(0) to correctly return true.

R=mstarzinger@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12990 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-16 13:28:34 +00:00
mstarzinger@chromium.org
3d1582c474 Fix Array.prototype.join evaluation order.
R=yangguo@chromium.org
BUG=v8:2263
TEST=mjsunit/regress/regress-2263

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12989 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-16 12:45:23 +00:00
yangguo@chromium.org
af6f7742e0 Fix test failures.
R=jkummerow@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12988 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-16 11:58:21 +00:00
yangguo@chromium.org
63f109aaa5 Introduce helper functions to test parallel recompilation.
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12986 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-16 10:57:50 +00:00
jkummerow@chromium.org
7f824867f6 Perform CPU sampling by CPU sampling thread only iff processing thread is not running.
- perform CPU profiler sampling in the sampler thread as we used to;
- skip sampling in the sampling thread if processing thread is running;
- only install SIGPROF handler when CPU profiling is enabled.

BUG=v8:2364

Review URL: https://codereview.chromium.org/11231002
Patch from Sergey Rogulenko <rogulenko@google.com> and Andrey Kosyakov <caseq@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12985 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-16 10:38:10 +00:00