Commit Graph

13510 Commits

Author SHA1 Message Date
palfia@homejinni.com
04c5b26398 MIPS: Inline number to string conversion for string addition into BinaryOp(Stub).
Port r17290 (b5fabb92)

Original commit message:
This fixes a performance regression that was caused by converting the
BinaryOpStub to a Hydrogen code stub. It also fixes a leftover TODO wrt.
the handling of Number*String or String*Number versions of the stub.

BUG=
R=plind44@gmail.com

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17304 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-21 22:16:01 +00:00
yurys@chromium.org
6b840f563e Temporarily disable test-heap-profiler/TrackHeapAllocations
The test started failing on  V8 Linux - nosnap - debug after r17301 which added stack traversal to the allocation tracker. I'm disabling it for now until the problem is fixed.

BUG=v8:2949
TBR=hpayer@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17303 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-21 16:21:16 +00:00
yurys@chromium.org
66bb9d1563 Record allocation stack traces
This is initial implementation of allocation profiler.

Whenever new object allocation is reported to the HeapProfiler and allocation tracking is on we will capture current stack trace, add it to the collection of the allocation traces (a tree) and attribute the allocated size to the top JS function on the stack.

Format of serialized heap snapshot is extended to include information about recorded allocation stack traces.

BUG=chromium:277984
R=hpayer@chromium.org, loislo@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17301 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-21 15:22:11 +00:00
ishell@chromium.org
30a2a31f14 HEnvironmentMarker factory added
R=bmeurer@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17300 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-21 14:18:55 +00:00
titzer@chromium.org
d63c8e4dc3 Allow constants to be deleted by reinserting them into the graph as needed.
BUG=
R=jkummerow@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17299 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-21 14:09:32 +00:00
mstarzinger@chromium.org
19b2ee1c40 Handlify PropertyCell::SetValueInferType and friends.
This finally gets rid of the pesky trampoline in SetValueInferType and
enforces the layering between PropertyCell and Heap. It requires full
handlification of NewGlobalObject as well, which is only used when the
snapshot is created at compile-time.

R=rossberg@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17297 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-21 13:55:24 +00:00
bmeurer@chromium.org
5d8c7ebf37 Add ishell@ to OWNERS.
TBR=danno@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17296 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-21 13:52:12 +00:00
danno@chromium.org
4c565138b5 Add tool to visualize machine code/lithium.
In the process:
- Add a command-line flag --opt-code-positions to track source position information throughout optimized code.
- Add a subclass of the hydrogen graph builder to ensure that the source position is properly set on the graph builder for all generated hydrogen code.
- Overhaul handling of source positions in hydrogen to ensure they are passed through to generated code consistently and in most cases transparently.

Originally reviewed in this CL: https://codereview.chromium.org/24957003/

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17295 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-21 13:35:48 +00:00
titzer@chromium.org
a255312491 Handle misaligned loads and stores in load elimination. Do not track misaligned loads and be conservative about invalidating misaligned stores. Add more tests for number conversion to string (NumberToStringStub exhibits misaligned loads)
BUG=v8:2934
R=bmeurer@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17294 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-21 13:33:03 +00:00
bmeurer@chromium.org
b453e6acb6 Prepare push to trunk. Now working on version 3.22.18.
R=mstarzinger@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17291 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-21 13:27:08 +00:00
bmeurer@chromium.org
100fb55555 Inline number to string conversion for string addition into BinaryOp(Stub).
This fixes a performance regression that was caused by converting the
BinaryOpStub to a Hydrogen code stub. It also fixes a leftover TODO wrt.
the handling of Number*String or String*Number versions of the stub.

R=rossberg@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17290 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-21 12:42:08 +00:00
bmeurer@chromium.org
ef12527b7c Revert "Add a soft-deopt in keyed element access when current IC is pre-monomorphic and no type feedback was collected."
This reverts commit r17288 for breaking the mjsunit/unbox-double-arrays
test on almost every platform.

TBR=hpayer@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17289 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-21 12:32:38 +00:00
hpayer@chromium.org
9667e1b30f Add a soft-deopt in keyed element access when current IC is pre-monomorphic and no type feedback was collected.
BUG=
R=danno@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17288 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-21 12:10:01 +00:00
yangguo@chromium.org
2d6dab1f2e Harmony: implement Math.trunc.
BUG=v8:2938
R=dslomov@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17286 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-21 11:15:11 +00:00
titzer@chromium.org
e14c323819 Revert "Enable load elimination."
This reverts commit r17281.

TBR=bmeurer@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17284 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-21 09:36:55 +00:00
titzer@chromium.org
e77739835e Enable load elimination.
BUG=
R=mstarzinger@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17281 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-21 09:24:29 +00:00
yangguo@chromium.org
575438518c Harmony: implement Math.sign.
R=dslomov@chromium.org
BUG=v8:2938

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17279 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-21 09:16:31 +00:00
bmeurer@chromium.org
306e8abb66 Prepare push to trunk. Now working on version 3.22.17.
R=svenpanne@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17276 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-21 07:19:11 +00:00
mstarzinger@chromium.org
701417f955 Make stack_parameter_count a plain register.
R=rossberg@chromium.org, danno@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17275 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-18 14:55:21 +00:00
titzer@chromium.org
4d0f2cdd3b Implement global load elimination based on flow engine.
BUG=
R=mvstanton@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17273 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-18 14:28:24 +00:00
yangguo@chromium.org
a428465819 Handlify JSObject::HasReal*Property.
R=ulan@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17272 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-18 12:52:07 +00:00
loislo@chromium.org
b50be9ff12 HeapProfiler: integrate FindUntrackedObjects into js code.
In some cases we would like to check untracked objects right from the js code.
Otherwise the objects might be collected rigth before check.

BUG=none
R=hpayer@chromium.org, yurys@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17270 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-18 11:25:43 +00:00
loislo@chromium.org
189d13a3fe HeapProfiler: for the test purposes we would like to trace object movements.
When we have an untracked allocations we need to fix it.
It is a bit tricky process due to lack of logging.

I added FLAG_heap_profiler_trace_objects that enables log for object movements.

Drive by fix: with help of logging I found a bug in LeftTrim method for FixedArray.

BUG=none
R=svenpanne@chromium.org, yurys@chromium.org

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

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

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17269 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-18 10:59:55 +00:00
jkummerow@chromium.org
4e96d4dee6 Tweak Math.log on ia32/x64
ia32 and x64 more consistent now
1. use non-transcendental cache version of log for x64
2. use negative infinity constant instead of pushing to stack and loading to XMM register
3. remove movdbl, use movsd directly. movdbl seems confusing

BUG=
R=jkummerow@chromium.org

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

Patch from Weiliang Lin <weiliang.lin2@gmail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17268 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-18 10:54:45 +00:00
mstarzinger@chromium.org
a25f75736e Prepare push to trunk. Now working on version 3.22.16.
R=bmeurer@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17265 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-18 10:32:11 +00:00
mstarzinger@chromium.org
6f77ab124c Revert "HeapProfiler: for the test purposes we would like to trace object movements."
This reverts r17263 because of compile failures accross all builds.

TBR=loislo@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17264 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-18 09:50:06 +00:00
loislo@chromium.org
c748e7bbc9 HeapProfiler: for the test purposes we would like to trace object movements.
When we have an untracked allocations we need to fix it.
It is a bit tricky process due to lack of logging.

I added FLAG_heap_profiler_trace_objects that enables log for object movements.

Drive by fix: with help of logging I found a bug in LeftTrim method for FixedArray.

BUG=none
R=svenpanne@chromium.org, yurys@chromium.org

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

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17263 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-18 09:40:00 +00:00
svenpanne@chromium.org
847f4ce616 Removed dead code from mksnapshot.
R=mstarzinger@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17262 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-18 09:06:58 +00:00
yurys@chromium.org
ed7dea41a9 Always make a copy of a string when adding it to StringsStorage
Otherwise the string passed as const char* may be disposed and we will end up with a dangling pointer.

Also changed StringsStorage::GetCopy so that a copy is not created if the string is already in the cache.

BUG=None
R=alph@chromium.org, svenpanne@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17260 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-18 08:56:14 +00:00
loislo@chromium.org
fd45ddcc15 Revert "HeapProfiler: for the test purposes we would like to trace object movements."
Compilation failed on Win64.

This reverts commit 6909faccca68c04b7ec4537538e6e7a0cc1650b8.

BUG=none
TBR=yurys

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17259 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-18 08:11:36 +00:00
loislo@chromium.org
5ee9a06568 HeapProfiler: for the test purposes we would like to trace object movements.
When we have an untracked allocations we need to fix it.
It is a bit tricky process due to lack of logging.

I added FLAG_heap_profiler_trace_objects that enables log for object movements.

Drive by fix: with help of logging I found a bug in LeftTrim method for FixedArray.

BUG=none
R=svenpanne@chromium.org, yurys@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17258 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-18 07:43:50 +00:00
rafaelw@chromium.org
ce2c9b1db1 Prevent changes to hidden properties from being observable via Object.observe
This addresses the leak that mstarzinger points out (https://codereview.chromium.org/26390003/) and includes the test.

Note that this adds a test that observing changes to the empty-string property remains possible.

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

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17257 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-17 20:49:45 +00:00
svenpanne@chromium.org
882778bf09 Make it possible to run a test only in the standard variant.
Use this for mjsunit/unicode-case-overoptimization, which is not
related to Crankshaft at all and takes ages.

R=jkummerow@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17255 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-17 13:09:28 +00:00
mstarzinger@chromium.org
0a2b4ecdcc Add regression test for optimized count operation.
This is a regression test for a bug with handling of count operations
that target a JavaScript accessor on the prototype chain in Crankshaft.

R=jkummerow@chromium.org
BUG=chromium:306851
TEST=mjsunit/regress/regress-crbug-306851

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17254 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-17 12:48:28 +00:00
marja@chromium.org
f039f334f5 Enable calling the SetReference* & SetObjectGroupId functions with a Persistent<SubclassOfValue>.
This is needed for https://codereview.chromium.org/26792002/

BUG=
R=svenpanne@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17253 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-17 11:48:03 +00:00
yangguo@chromium.org
8ef4b0ca83 Cosmetic: Add macros for NaN, undefined and Infinity to native js code.
Nobody should need to use $NaN, 0/0, 1/0 and void 0.

R=mvstanton@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17252 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-17 10:02:45 +00:00
mstarzinger@chromium.org
f8cc87a095 Prepare push to trunk. Now working on version 3.22.15.
R=bmeurer@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17249 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-17 08:03:12 +00:00
palfia@homejinni.com
331850e3eb MIPS: Add support for Token::NE and Token::NE_STRICT to TokenToCondition.
Port r17239 (c203175f)

Original commit message:
This is required to be able to use these tokens with
HCompareNumericAndBranch.

BUG=
R=plind44@gmail.com

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17248 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-16 23:15:30 +00:00
yangguo@chromium.org
e0508615a9 Fix leak in optimizing compiler thread.
R=mvstanton@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17247 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-16 16:27:17 +00:00
yangguo@chromium.org
b8dd056fa2 Improve queuing for concurrent OSR.
Specifically, this includes:
- Encapsulating data structure for osr buffer into CyclicBuffer
- Use the new CyclicQueue instead of UnboundedQueue to queue new jobs.
  We can enqueue and dequeue a CyclicQueue on both ends in O(1).
  This allows us to add OSR jobs to the front for lower compile latency.
- Dispose osr buffer by one stale job per GC to avoid leak

R=titzer@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17244 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-16 14:47:20 +00:00
olivf@chromium.org
0a6d2dec9f Fix lower bound of shr.
BUG=
R=rossberg@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17243 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-16 14:39:27 +00:00
yurys@chromium.org
18482d0da2 Get rid of HEAP_PROFILE macro
All usages of the macro were replaced with direct calls to the heap profiler. The macro does null check for HeapProfiler which is always true.

BUG=None
R=yangguo@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17242 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-16 14:33:04 +00:00
mstarzinger@chromium.org
3e0f828b8f Revert "TransitionAndStoreStub bailout needs to transition (and store)."
This reverts commit r17216 breaking fast/js/cross-frame-bad-time.html test.

R=mvstanton@chromium.org
TEST=webkit:fast/js/cross-frame-bad-time.html

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17241 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-16 14:17:31 +00:00
titzer@chromium.org
24a7e06323 Remove dead constants not in block #0.
BUG=
R=jkummerow@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17240 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-16 13:19:46 +00:00
bmeurer@chromium.org
6054baadd2 Add support for Token::NE and Token::NE_STRICT to TokenToCondition.
This is required to be able to use these tokens with
HCompareNumericAndBranch.

R=svenpanne@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17239 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-16 12:20:21 +00:00
yangguo@chromium.org
ada764446a Refactor part of handles.cc
BUG=
R=rossberg@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17238 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-16 11:52:03 +00:00
mstarzinger@chromium.org
5eae41e518 Return descriptor ownership after TrimDescriptorArray to allow resharing of descriptor arrays
BUG=None
R=mstarzinger@chromium.org

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

Patch from Ross McIlroy <rmcilroy@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17237 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-16 11:16:49 +00:00
mstarzinger@chromium.org
100ab91013 Implement fixpoint iteration for escape analysis.
R=titzer@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17235 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-16 09:16:56 +00:00
yangguo@chromium.org
1eeebd2b6b Handlify GetPropertyWithCallback.
R=mstarzinger@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17234 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-16 09:13:31 +00:00
mstarzinger@chromium.org
0bd3e179e5 Prepare push to trunk. Now working on version 3.22.14.
R=jkummerow@chromium.org, bmeurer@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17230 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-16 08:58:53 +00:00