Commit Graph

5442 Commits

Author SHA1 Message Date
sgjesse@chromium.org
1ef2b9a385 Fix bug in r6930 and r6933
The loading the register used for the null object was to early and it could be clobbered.

TBR=karlklose@chromium.org
BUG=none
TEST=mozilla/ecma_3/Statements/regress-131348
Review URL: http://codereview.chromium.org/6578020

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6937 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-24 15:26:27 +00:00
whesse@chromium.org
7560fa903b X64 Crankshaft: Implement Math.abs on x64 lithium.
Review URL: http://codereview.chromium.org/6576030

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6936 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-24 15:21:30 +00:00
ricow@chromium.org
65e4a08793 Fix compile failure from revision 6934 and win64 compile failure from revision 6931.
Review URL: http://codereview.chromium.org/6576033

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6935 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-24 14:22:36 +00:00
lrn@chromium.org
68f1c73a06 Fix array concat to follow the specification in the presence of element getters.
Also fix issue 1175 and 1177.

BUG=v8:1175

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6934 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-24 14:00:52 +00:00
sgjesse@chromium.org
ef0f8985ed X64: Port r5445
r5445: Implement for-in cache validity checking in the full codegen on IA-32.

BUG=v8:867
TEST=none
Review URL: http://codereview.chromium.org/6576028

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6933 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-24 13:37:59 +00:00
sgjesse@chromium.org
20f0b65df0 Fix porting bug in r6929
Review URL: http://codereview.chromium.org/6579036

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6932 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-24 12:41:26 +00:00
ricow@chromium.org
77fffe2207 X64: Implement DoComputeOsrOutputFrame and fix Generate_OnStackReplacement.
The existing version does not have a correct implementation of
Generate_OnStackReplacement since we do not correctly find the loop
depth. This is mainly because EmitStackCheck in full-codegen-x64.cc
did not write it and partly due to us reading at the wrong offset
(which had no effect when it was not written in the first place, we
simply got a random number from the next instruction).

The DoComputeOsrOoutputFrame is very similar to the ia32 version.



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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6931 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-24 12:01:24 +00:00
sgjesse@chromium.org
bd2fb51375 ARM: Port r5445
r5445: Implement for-in cache validity checking in the full codegen on IA-32.
Review URL: http://codereview.chromium.org/6581031

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6930 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-24 11:39:27 +00:00
sgjesse@chromium.org
c8f8c69fd6 X64: Port r6635 and r6659
r6635: Remove the redundant load on every context lookup.
r6659: Do not compile the unreachable body of functions with illegal redeclarations.

The crankshaft part of these changes are already ported.
Review URL: http://codereview.chromium.org/6581029

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6929 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-24 11:36:14 +00:00
ricow@chromium.org
cfd6268256 Fix wrong assertion in assembler causing the shell to crash with --code-comments.
Since writting a code comment can include a pc-jump the assertion
should just check that we are greater than or equal to
kMinRelocCommentSize (renamed from kRelocCommentSize), not that we are
actually equal to.


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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6928 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-24 10:29:01 +00:00
karlklose@chromium.org
5572d24fc5 ARM: Fix DoubleToI.
BUG=1811
TEST=test/mjsunit/regress/regress-1181.js

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6925 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-24 10:07:35 +00:00
fschneider@chromium.org
a23b4f2da9 Prepare push to trunk. Now working on version 3.1.7.
Review URL: http://codereview.chromium.org/6580027

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6924 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-24 09:54:37 +00:00
mikhail.naganov@gmail.com
3adfa360a2 Remove old Python version of tickprocessor
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6922 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-24 08:23:37 +00:00
sgjesse@chromium.org
15c9091a85 Fix presubmit error.
TBR=ricow@chromium.org
Review URL: http://codereview.chromium.org/6580026

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6921 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-24 08:23:08 +00:00
sgjesse@chromium.org
acd4f89999 ARM: Port r6635 and r6659
r6635: Remove the redundant load on every context lookup.
r6659: Do not compile the unreachable body of functions with illegal redeclarations.
Review URL: http://codereview.chromium.org/6572003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6920 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-24 07:17:43 +00:00
ricow@chromium.org
0d6d0e6cd1 Land update to sputnik tests.
Original cl:
http://codereview.chromium.org/6542066/

Landing to ensure sync with buildbot update.


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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6918 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-24 06:38:45 +00:00
fschneider@chromium.org
bdcf0ec270 Fix debug tracing of live ranges and remove unused code.
When printing the sub-parts of a live range, only print the use intervals
belonging to each part.

Add a flag to print all use positions (incl. environment uses)


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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6917 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-23 15:25:04 +00:00
whesse@chromium.org
0d067b56c7 Temporarily disable DoStoreContextSlot in x64 lithium codegen to diagnose non-reproducible buildbot error. Fix presubmit error.
Review URL: http://codereview.chromium.org/6572002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6915 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-23 13:52:11 +00:00
whesse@chromium.org
c61ac2cd84 X64 Crankshaft: Add DoOuterContext to x64 lithium.
Review URL: http://codereview.chromium.org/6570008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6914 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-23 13:26:28 +00:00
kmillikin@chromium.org
791c9e2c21 Remove most uses of HSubgraph as an argument.
In a lot of cases where we were passing a subgraph (a pair of basic blocks),
we actually only needed a basic block.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6913 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-23 11:59:18 +00:00
whesse@chromium.org
65443b3879 X64 Crankshaft: Add Typeof and TypeofIs to x64 lithium. Fix presubmit.
Review URL: http://codereview.chromium.org/6568004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6912 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-23 11:29:11 +00:00
karlklose@chromium.org
a0b8d5a55c Fix presubmit for r6908.
TBR=whesse

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6911 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-23 11:25:27 +00:00
fschneider@chromium.org
288b4fb8f4 HIR refactoring.
Review URL: http://codereview.chromium.org/6538080

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6910 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-23 11:19:50 +00:00
karlklose@chromium.org
16cc528316 ARM: Implement DoPower in the lithium code generator.
Review URL: http://codereview.chromium.org/6532020

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6909 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-23 10:41:13 +00:00
whesse@chromium.org
337f6a953d X64 Crankshaft: Disable incompletely implemented on-stack replacement.
Review URL: http://codereview.chromium.org/6567003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6908 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-23 10:33:49 +00:00
ager@chromium.org
a4ffbdc61b x64: Implement delete property in lithium backend.
Review URL: http://codereview.chromium.org/6570005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6907 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-23 10:10:47 +00:00
ager@chromium.org
bfb1cb4288 x64: Implement context stores and loads, unknown osr value, and osr
entry in lithium backend.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6906 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-23 09:51:53 +00:00
ager@chromium.org
ae328e61b0 Properly reset external catcher if exception couldn't be externally caught.
We can wrongly assume that exception which is not intended to be caught
by external try/catch should be caught if this exception inherits
external catcher from some previous exception.  To prevent that,
clear external catcher when processing exceptions which cannot be
externally caught.

BUG=v8:1184
TEST=test/mjsunit/regress/regress-1184.js

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6905 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-23 06:55:47 +00:00
mmaly@chromium.org
3ff7aa0ea9 Fix for bug http://code.google.com/p/v8/issues/detail?id=1176.
Review URL: http://codereview.chromium.org/6469083/

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6904 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-22 17:20:25 +00:00
rossberg@chromium.org
3af35dc96f Optimize functions needing a local context.
Allocate the context in the prologue. Two issues had to be solved:
(1) deoptimization needs to handle functions with a local context,
(2) we need a safepoint in the prologue.
(Thanks to Kevin.)

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6903 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-22 16:56:57 +00:00
mikhail.naganov@gmail.com
56788625b6 Fix CPU profiling for Crankshaft.
The main issue was due to multiple recompilations of functions.  Now
code objects are grouped by function using SFI object address.
JSFunction objects are no longer tracked, instead we track SFI object
moves. To pick a correct code version, we now sample return addresses
instead of JSFunction addresses.

tools/{linux|mac|windows}-tickprocessor scripts differentiate
between code optimization states for the same function
(using * and ~ prefixes introduced earlier).

DevTools CPU profiler treats all variants of function code as
a single function.

ll_prof treats each optimized variant as a separate entry, because
it can disassemble each one of them.

tickprocessor.py not updated -- it is deprecated and will be removed.

BUG=v8/1087,b/3178160
TEST=all existing tests pass, including Chromium layout tests

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6902 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-22 16:31:24 +00:00
whesse@chromium.org
08377c8449 X64 Crankshaft: Implement CallKeyed in optimizing compiler.
Review URL: http://codereview.chromium.org/6541069

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6897 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-22 14:40:13 +00:00
vitalyr@chromium.org
25f2f21f50 grokdump: Simple windows minidump analysis on linux.
Analyses full minidump (.dmp) files.

Shows the processor state at the point of exception including the
stack of the active thread and the referenced objects in the V8
heap. Code objects are disassembled and the addresses linked from the
stack (pushed return addresses) are marked with "=>".

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6896 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-22 14:25:26 +00:00
ricow@chromium.org
2e7a41f944 Add file left out of last commit.
Review URL: http://codereview.chromium.org/6549016

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6895 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-22 12:42:40 +00:00
ricow@chromium.org
45c63ffa6a Add more generic version of reloc info padding to ensure enough space for reloc patching during deoptimization (fixes issue 1174).
The old version only added extra space when we did indirect calls, but
the problem remains the same with normal calls that can be represented
as a single byte. When doing patching each call will always be at
least 2 bytes long because we use RUNTIME_ENTY as the reloc mode.


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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6894 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-22 12:28:33 +00:00
ricow@chromium.org
8162d9029d Fix second half of issue 1151, the first change (r6765) only fixed FunctionGetPrototype, not FunctionSetPrototype.
Review URL: http://codereview.chromium.org/6548008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6893 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-22 12:27:36 +00:00
sgjesse@chromium.org
0a15b9116a X64: Refactor the string add in the type recording binary operation stub
This makes the code have the same structore as on IA32 and ARM, and will also support possible fast adding a smi and string where the string is to the right and fast adding of String objects.
Review URL: http://codereview.chromium.org/6542060

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6892 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-22 12:26:31 +00:00
fschneider@chromium.org
031062d246 Fix bug with input representation of HValueOf.
The class did not correctly implement the RequiredInputRepresentation.
I changed this functions to be abstract so that all hydrogen classes
must implement it.

As a convention instructions with zero input operands return None as input
representation.

Instructions that can handle all input representations without converting before
also have None as required input representation (e.g. HTest)

All other instructions need a proper required input representation.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6891 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-22 12:14:53 +00:00
whesse@chromium.org
b5c3b18f29 X64 Crankshaft: Implement DoubleToI in optimizing compiler.
Review URL: http://codereview.chromium.org/6551009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6889 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-22 12:02:47 +00:00
sandholm@chromium.org
9d4b0fa932 Improve parseInt.
Review URL: http://codereview.chromium.org/6546055

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6888 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-22 11:21:15 +00:00
kmillikin@chromium.org
3c02d036a8 Partial refactoring of subgraphs.
Change the interface to the Hydrogen graph builder to appear like it
directly holds a current basic block and a current environment.
Remove some direct accesses to the current subgraph, and remove
subgraph accessors that simply forwarded to the exit block.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6887 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-22 10:32:16 +00:00
sgjesse@chromium.org
b0fa94777e Refactored PathTracer in heap.cc.
This is so that it can be reused by LOL code later.

Patch by Mark Lam from Hewlett-Packard Development Company, LP

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6886 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-22 10:05:30 +00:00
sgjesse@chromium.org
2ab5691ac1 ARM: Add support for just one string argument in the string add stub
Having a string add stub which can handle a string in just one of the arguments is essencial for the type recording binary operation stub when expecting strings. Otherwise string added with e.g. smi will always call the runtime for a type transition which will be back to the same types as the transition code keeps it in string arguments when one argument is a string.

This fixes the regression (especially Delta Blue) caused by replacing the generic binary operation stub with the type recording binary operation stub in the ARM lithium code generator.
Review URL: http://codereview.chromium.org/6551008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6882 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-22 09:35:37 +00:00
ager@chromium.org
823f9feb05 Revert "Expand fast case of parseInt to include radix == 10 and radix == 0."
Causes Mozilla failures.

TBR=sandholm@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6880 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-22 09:14:47 +00:00
sandholm@chromium.org
4e2101d928 Expand fast case of parseInt to include radix == 10 and radix == 0.
Review URL: http://codereview.chromium.org/6532087

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6879 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-22 09:01:06 +00:00
kmillikin@chromium.org
14e185b31b Change the translation of break/continue into Hydrogen.
Resolve break and continue when we see them, rather then deferring
them until later.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6878 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-22 08:40:10 +00:00
kmillikin@chromium.org
663da3df40 Fix presubmit failure.
TBR=ager@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6877 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-22 06:41:32 +00:00
kmillikin@chromium.org
c1386c3381 Shorten live ranges for arguments to runtime calls.
Before, the live ranges of the arguments extended to the call itself, and
they were pushed immediately before the call.  Now, they are spilled eagerly
as soon as their value is available and they are spilled to the right place.

The inlined runtime calls in the optimized backend are changed to work as in
all the other backends: they get their arguments untranslated and can choose
their own custom evaluation order.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6876 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-22 06:25:01 +00:00
mmaly@chromium.org
4e6635ad66 Fix Xcode project.
TBR= ager@chromium.org

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6875 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-22 01:10:28 +00:00
mmaly@chromium.org
fb20f7fc75 CallIC and KeyedCallIC not wrapping this for strict mode functions.
Fix CallIC and KeyedCallIC to correctly use Handle<Object>.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6874 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-22 00:39:21 +00:00