Commit Graph

10537 Commits

Author SHA1 Message Date
mstarzinger@chromium.org
b22c7eaed9 Revert "Reapply optimization of DeoptimizeIf for ia32." (r13767)
This optimization turns out to have a negative effect on i5 processors
throughout the board. This needs further investigation to figure out
the underlying reason but will be rolled out for now.

R=danno@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13772 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-28 11:24:18 +00:00
yangguo@chromium.org
0e8a5fe4d8 Fix math.round with SSE4.1.
R=verwaest@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13771 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-28 10:39:34 +00:00
yangguo@chromium.org
5c264ade8e Fix wrong test in r13766 (Insert conversion to string in string.replace).
R=ulan@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13770 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 15:36:02 +00:00
verwaest@chromium.org
5a543d683a Order arguments of ComputeMonomorphicFlags to match ComputeFlags.
Review URL: https://chromiumcodereview.appspot.com/12226090

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13769 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 15:33:37 +00:00
verwaest@chromium.org
3ab255f55d Currently this mostly just moves code around.
- Later the different parts will become individual code objects that tailcall into one another.
- The mapcheck/symbol check still needs to be separated from the overall prototype-chain check so that the ICs can reuse the handlers.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13768 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 15:28:53 +00:00
mstarzinger@chromium.org
574dc38f96 Reapply optimization of DeoptimizeIf for ia32 broken in r13633.
R=danno@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13767 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 15:17:27 +00:00
yangguo@chromium.org
6e64bdfc6e Insert conversion to string in string.replace.
(missing since r13761)

R=ulan@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13766 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 15:12:30 +00:00
svenpanne@chromium.org
bfaf38d2fd Miscellaneous profile-driven Isolate plumbing.
While doing this, it became clear that quite a few functions should not be
static and should better live in various classes as instance methods, but I'll
leave this for a later CL.

BUG=v8:2487

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13765 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 14:45:59 +00:00
yangguo@chromium.org
2a3063a7c3 Handle negative input in inlined Math.round on Intel CPUs.
R=jkummerow@chromium.org
BUG=v8:2451

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13764 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 14:44:57 +00:00
mstarzinger@chromium.org
ea5e9edac4 Fix materialization of arguments objects with unknown values.
This fixes the deoptimizer to materialize arguments objects of correct
length even in cases where the actual argument values are unknown and
were optimized away by Crankshaft. This can happen if only the length
property or the identity of an arguments object is used.

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

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13763 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 14:37:51 +00:00
yangguo@chromium.org
7145671392 Make message listener API backwards compatible.
R=ulan@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13762 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 14:35:39 +00:00
yangguo@chromium.org
4cbe7100e6 Refactor implementation for String.prototype.replace.
R=ulan@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13761 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 14:14:45 +00:00
hpayer@chromium.org
fb807eeb0d Increase acceptable boot up memory size in tests for parallel sweeper threads.
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13760 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 13:38:29 +00:00
svenpanne@chromium.org
c26d100b10 Avoid TLS accesses in Object::Lookup and Object::GetPrototype.
Both methods were among the top causes for TLS accesses.

BUG=v8:2487

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13759 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 13:22:29 +00:00
hpayer@chromium.org
e819dd2869 Shrinking of PagedSpace is done only by sweeper.
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13758 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 12:59:52 +00:00
hpayer@chromium.org
ddeaa4a3f2 Added system thread manager class.
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13757 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 12:55:55 +00:00
svenpanne@chromium.org
6e829ed485 Added Isolate parameter to CodeStub::GetCode().
According to gprof, this was the #1 cause for TLS access during an Octane run.

BUG=v8:2487

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13756 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 12:33:24 +00:00
svenpanne@chromium.org
6d5f0d8772 Avoid HEAP macro in spaces.cc
This was another top cause for TLS access.

BUG=v8:2487

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13755 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 12:30:23 +00:00
jkummerow@chromium.org
b3cb955c4f Normalized map copies should not share code caches
Review URL: https://codereview.chromium.org/12328136

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13754 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 12:17:50 +00:00
ulan@chromium.org
211f4a7be0 Disable regress-crbug-160010 for Android because it triggers OOM.
R=yangguo@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13753 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 12:14:21 +00:00
ulan@chromium.org
d18e118f17 ARM: Fix disassembly of some VFP instructions with condition codes
Previously, we would disassemble some VFP instructions like this:

  vmla.f64eq d16, d17, d18

This patch moves the condition to the right place:

  vmlaeq.f64 d16, d17, d18

Spotted by Rodolph Perfetta!

BUG=none

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13752 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 11:52:45 +00:00
jkummerow@chromium.org
610d78cd2c Integer HConstants don't need to kDependsOnOsrEntries
Review URL: https://codereview.chromium.org/12299009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13751 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 11:40:25 +00:00
jkummerow@chromium.org
732a2af96a Clean up mjsunit/array-bounds-check-removal
Review URL: https://codereview.chromium.org/12317142

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13750 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 10:50:37 +00:00
hpayer@chromium.org
6f8f82235f Set default number of sweeper threads to two.
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13749 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 10:35:34 +00:00
ulan@chromium.org
87265114c4 Emit VMLS for multiply-subtract on ARM.
BUG=none

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13748 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 10:24:40 +00:00
mstarzinger@chromium.org
80dc769391 Prepare push to trunk. Now working on version 3.17.6.
R=jkummerow@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13741 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 09:28:05 +00:00
mstarzinger@chromium.org
aaada6e950 Fix SSE2 scope being too broad in DoCmpIDAndBranch.
R=ulan@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13740 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-26 18:12:27 +00:00
palfia@homejinni.com
56f507c580 MIPS: Combine %_SubString and %_StringCharAt.
Port r13700 (587dc7c1)

BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13739 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-26 17:48:14 +00:00
adamk@chromium.org
deeddc7e76 Remove duplication and unnecessary HandleScope from HasElement helper functions
Review URL: https://codereview.chromium.org/12328064

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13736 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-26 17:20:21 +00:00
yurys@chromium.org
dc9b817667 Send SIGPROF signals on the profiler event processor thread
The patch is based on the previous one that was rolled out: https://code.google.com/p/v8/source/detail?r=12985

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

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

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

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

BUG=v8:2364

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13735 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-26 16:15:32 +00:00
ulan@chromium.org
0184fe5149 [Android] Fix v8_shell compilation for Android component build.
r12883 was in complete because the library was included for host and
target. Restrict to just target.

BUG=chromium:158821

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13734 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-26 15:41:04 +00:00
ulan@chromium.org
16e089367b Visit stored context when iterating stack for optimized stub.
BUG=v8:2509
TEST=mjsunit/regress/regress-1125,NavierStokes fails on Nexus 10.
R=mstarzinger@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13733 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-26 14:24:16 +00:00
mstarzinger@chromium.org
7d681e014d Compile FastCloneShallowObjectStub using Crankshaft.
This changes FastCloneShallowObjectStub to be compiled independent of
the target architecture. It also adds tracing to the deoptimizer for
compiled stubs and contains some minor bugfixes.

R=danno@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13732 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-26 13:08:08 +00:00
yurys@chromium.org
d394f31d72 Use boolean instead of Atomic32 for is_profiling_ flag
The field is only accessed on the JS thread so it can be converted into bool.

BUG=None

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13731 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-26 12:27:55 +00:00
dcarney@chromium.org
52a015b1af Fix overflow in WriteQuoteJsonString and SlowQuoteJsonString
R=yangguo@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13730 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-26 11:02:39 +00:00
yangguo@chromium.org
95c5e68714 Fix bogus regexp test.
The reason this test fails on ARM hardware but not on Intel hardware
(including the ARM simulator) is this:
'\xa0' is interpreted as a negative signed byte number. Casting it to
uc16 sign-extends it. The resulting string does not fit into a one-byte
string, thus a two-byte string is allocated.
For some reason the code compiled for ARM does not sign-extend, and 0xa0
fits into a one-byte string. Thus a one-byte string is allocated. Trying
to cast it to two-byte causes assertion failure.

BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13729 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-26 10:49:59 +00:00
mstarzinger@chromium.org
ce1e10f5fc Make __proto__ a foreign callback on Object.prototype.
This moves the __proto__ property to Object.prototype and turns it into
a callback property actually present in the descriptor array as opposed
to a hack in the properties lookup. For now it still is a "magic" data
property using foreign callbacks and not an accessor property visible to
JavaScript.

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

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

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13728 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-26 10:46:00 +00:00
yangguo@chromium.org
72b802f27a Refactor RegExpStub to check lazily.
R=ulan@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13727 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-26 09:53:07 +00:00
adamk@chromium.org
8f407c7b99 Move extensibility check to the top of Object.isFrozen/Object.isSealed
This speeds up isFrozen/isSealed checks on "normal" objects without
slowing down checks on frozen/sealed objects.

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

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13726 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-25 19:44:21 +00:00
adamk@chromium.org
30a4a798e5 Speed up non-interceptor case of Object.getOwnPropertyNames
When there are interceptors on an object, it's possible to
end up with duplicate property names. But when all the names
are provided by v8, a collision is not possible, so we can
fast-path that case by not de-duping.

Also added better test coverage for interceptor API.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13725 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-25 18:58:47 +00:00
ulan@chromium.org
cb5c8554c0 Debugger: ScopeMirror has N^2 algorithm when building closure mirrors. (take 2).
Review URL: https://chromiumcodereview.appspot.com/12326103
Patch from Pavel Feldman <pfeldman@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13724 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-25 16:46:54 +00:00
jkummerow@chromium.org
8336fd2d3a MIPS: Add android build support for mips in gyp.
Added mipsel target in gyp and makefiles used for android build.

BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13723 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-25 16:39:03 +00:00
ulan@chromium.org
9ebcfb41e2 ARM: Make DoStoreKeyedFixedDoubleArray faster; don't allow conditional Vmov
This patch makes us generate faster code for DoStoreKeyedFixedDoubleArray,
by using a branch rather than a conditional Vmov instruction.

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

Thanks to Rodolph for pointing me to this!

BUG=none

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13722 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-25 16:15:37 +00:00
loislo@chromium.org
34c372d800 Fix for HeapSnapshotAddressReuse test case.
BUG=V8:2189
TEST=HeapSnapshotAddressReuse

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13721 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-25 16:09:57 +00:00
ulan@chromium.org
d01fced78d Prepare push to trunk. Now working on version 3.17.5.
R=jkummerow@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13718 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-25 15:47:52 +00:00
svenpanne@chromium.org
fb6776e84a Made Isolate a mandatory parameter for everything Handle-related.
Unified parameter order of CreateHandle with the rest of v8 on the way. A few
Isolate::Current()s had to be introduced, which is not nice, and not every place
will win a beauty contest, but we can clean this up later easily in smaller steps.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13717 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-25 14:46:09 +00:00
danno@chromium.org
cbe088fffc Fix bugs in generating and printing of Crankshaft stubs
Review URL: https://codereview.chromium.org/12317044

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13716 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-25 14:03:09 +00:00
ulan@chromium.org
7dd0b1ca77 Zap holes in dependent code array after deoptimizing a code group.
BUG=crash on GC stress builder

R=mstarzinger@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13715 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-25 12:27:28 +00:00
ulan@chromium.org
82a7ce63dc Revert r13699 "Debugger: ScopeMirror has N^2 algorithm when building closure mirrors." because of WebKit crashes.
BUG=v8:2554
R=verwaest@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13714 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-25 11:56:37 +00:00
ulan@chromium.org
5c7bff3ed8 Prepare push to trunk. Now working on version 3.17.4.
R=jkummerow@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13711 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-21 14:04:19 +00:00