whesse@chromium.org [Fri, 25 Feb 2011 13:22:38 +0000 (13:22 +0000)]
X64 Crankshaft: Fix error in r6897. Restore context register after KeyedCallIC. Only non-trivial change is to lithium-codegen-x64.cc.Update copyright dates on all recently modified X64 platform files.
Review URL: http://codereview.chromium.org/6592008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6952
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Fri, 25 Feb 2011 13:04:07 +0000 (13:04 +0000)]
ARM: Fix instruction double to i
The double to i convertion should round to zero not infinity.
Thes bug was revealed by http://codereview.chromium.org/6597003, where the value of (x * 1.
0000000001) | 0 was x - 1 and not x when x was a negative smi.
I will not commit http://codereview.chromium.org/6597003 before this is committed.
TEST=test/mjsunit/smi-ops-inlined.js
Review URL: http://codereview.chromium.org/6594008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6951
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Fri, 25 Feb 2011 12:56:46 +0000 (12:56 +0000)]
Fix assertion failure because of incorrect use of MaybeObjects.
Review URL: http://codereview.chromium.org/6599001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6950
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Fri, 25 Feb 2011 12:12:47 +0000 (12:12 +0000)]
X64 Crankshaft: Add untagged version of TranscendentalCacheStub to x64, enable Cos, Sin, and Log in lithium.
Review URL: http://codereview.chromium.org/6580032
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6949
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Fri, 25 Feb 2011 11:30:22 +0000 (11:30 +0000)]
Fix bug 73940.
I think this actually turns the code in question into dead code, because the current definition of UseSparseVariant only allows arrays in DictionaryMode, and these never return encoded ranges from %GetArrayKeys. This is a subtle link between the definition of %GetArrayKeys and UseSparseVariant, so I would prefer to keep the code rather than having an invisible depeendency.
BUG=73940
Review URL: http://codereview.chromium.org/6596004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6946
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Fri, 25 Feb 2011 11:17:31 +0000 (11:17 +0000)]
Clear exceptions set during attempts to lazily optimize.
Resubmit of patch for issue 1145 with a few additions:
- Now also clears exceptions when calling Runtime_LazyRecompile.
- Sets function where parsing fails to not be optimizable.
BUG=v8:1145
TEST=test/mjsunit/regress/regress-1145.js
Review URL: http://codereview.chromium.org/6469050
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6945
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Thu, 24 Feb 2011 19:25:22 +0000 (19:25 +0000)]
X64: Implement DoHasInstanceType
Review URL: http://codereview.chromium.org/6581036
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6940
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Thu, 24 Feb 2011 17:42:56 +0000 (17:42 +0000)]
Get property may throw an exception thanks to JS accessors.
Check result before and bail out if exception has been thrown.
BUG=v8:1172
TEST=test/mjsunit/regress/regress-1172-bis.js
Review URL: http://codereview.chromium.org/6580030
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6939
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Thu, 24 Feb 2011 15:39:09 +0000 (15:39 +0000)]
Landing for Zaheer.
Direct call accessor getter callbacks (arm implementation).
Original review: http://codereview.chromium.org/6462029/
Review URL: http://codereview.chromium.org/6576035
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6938
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Thu, 24 Feb 2011 15:26:27 +0000 (15:26 +0000)]
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
whesse@chromium.org [Thu, 24 Feb 2011 15:21:30 +0000 (15:21 +0000)]
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
ricow@chromium.org [Thu, 24 Feb 2011 14:22:36 +0000 (14:22 +0000)]
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
lrn@chromium.org [Thu, 24 Feb 2011 14:00:52 +0000 (14:00 +0000)]
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
sgjesse@chromium.org [Thu, 24 Feb 2011 13:37:59 +0000 (13:37 +0000)]
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
sgjesse@chromium.org [Thu, 24 Feb 2011 12:41:26 +0000 (12:41 +0000)]
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
ricow@chromium.org [Thu, 24 Feb 2011 12:01:24 +0000 (12:01 +0000)]
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
sgjesse@chromium.org [Thu, 24 Feb 2011 11:39:27 +0000 (11:39 +0000)]
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
sgjesse@chromium.org [Thu, 24 Feb 2011 11:36:14 +0000 (11:36 +0000)]
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
ricow@chromium.org [Thu, 24 Feb 2011 10:29:01 +0000 (10:29 +0000)]
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
karlklose@chromium.org [Thu, 24 Feb 2011 10:07:35 +0000 (10:07 +0000)]
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
fschneider@chromium.org [Thu, 24 Feb 2011 09:54:37 +0000 (09:54 +0000)]
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
mikhail.naganov@gmail.com [Thu, 24 Feb 2011 08:23:37 +0000 (08:23 +0000)]
Remove old Python version of tickprocessor
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6922
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Thu, 24 Feb 2011 08:23:08 +0000 (08:23 +0000)]
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
sgjesse@chromium.org [Thu, 24 Feb 2011 07:17:43 +0000 (07:17 +0000)]
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
ricow@chromium.org [Thu, 24 Feb 2011 06:38:45 +0000 (06:38 +0000)]
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
fschneider@chromium.org [Wed, 23 Feb 2011 15:25:04 +0000 (15:25 +0000)]
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
whesse@chromium.org [Wed, 23 Feb 2011 13:52:11 +0000 (13:52 +0000)]
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
whesse@chromium.org [Wed, 23 Feb 2011 13:26:28 +0000 (13:26 +0000)]
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
kmillikin@chromium.org [Wed, 23 Feb 2011 11:59:18 +0000 (11:59 +0000)]
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
whesse@chromium.org [Wed, 23 Feb 2011 11:29:11 +0000 (11:29 +0000)]
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
karlklose@chromium.org [Wed, 23 Feb 2011 11:25:27 +0000 (11:25 +0000)]
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
fschneider@chromium.org [Wed, 23 Feb 2011 11:19:50 +0000 (11:19 +0000)]
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
karlklose@chromium.org [Wed, 23 Feb 2011 10:41:13 +0000 (10:41 +0000)]
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
whesse@chromium.org [Wed, 23 Feb 2011 10:33:49 +0000 (10:33 +0000)]
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
ager@chromium.org [Wed, 23 Feb 2011 10:10:47 +0000 (10:10 +0000)]
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
ager@chromium.org [Wed, 23 Feb 2011 09:51:53 +0000 (09:51 +0000)]
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
ager@chromium.org [Wed, 23 Feb 2011 06:55:47 +0000 (06:55 +0000)]
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
mmaly@chromium.org [Tue, 22 Feb 2011 17:20:25 +0000 (17:20 +0000)]
Fix for bug 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
rossberg@chromium.org [Tue, 22 Feb 2011 16:56:57 +0000 (16:56 +0000)]
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
mikhail.naganov@gmail.com [Tue, 22 Feb 2011 16:31:24 +0000 (16:31 +0000)]
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
whesse@chromium.org [Tue, 22 Feb 2011 14:40:13 +0000 (14:40 +0000)]
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
vitalyr@chromium.org [Tue, 22 Feb 2011 14:25:26 +0000 (14:25 +0000)]
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
ricow@chromium.org [Tue, 22 Feb 2011 12:42:40 +0000 (12:42 +0000)]
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
ricow@chromium.org [Tue, 22 Feb 2011 12:28:33 +0000 (12:28 +0000)]
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
ricow@chromium.org [Tue, 22 Feb 2011 12:27:36 +0000 (12:27 +0000)]
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
sgjesse@chromium.org [Tue, 22 Feb 2011 12:26:31 +0000 (12:26 +0000)]
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
fschneider@chromium.org [Tue, 22 Feb 2011 12:14:53 +0000 (12:14 +0000)]
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
whesse@chromium.org [Tue, 22 Feb 2011 12:02:47 +0000 (12:02 +0000)]
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
sandholm@chromium.org [Tue, 22 Feb 2011 11:21:15 +0000 (11:21 +0000)]
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
kmillikin@chromium.org [Tue, 22 Feb 2011 10:32:16 +0000 (10:32 +0000)]
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
sgjesse@chromium.org [Tue, 22 Feb 2011 10:05:30 +0000 (10:05 +0000)]
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
sgjesse@chromium.org [Tue, 22 Feb 2011 09:35:37 +0000 (09:35 +0000)]
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
ager@chromium.org [Tue, 22 Feb 2011 09:14:47 +0000 (09:14 +0000)]
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
sandholm@chromium.org [Tue, 22 Feb 2011 09:01:06 +0000 (09:01 +0000)]
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
kmillikin@chromium.org [Tue, 22 Feb 2011 08:40:10 +0000 (08:40 +0000)]
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
kmillikin@chromium.org [Tue, 22 Feb 2011 06:41:32 +0000 (06:41 +0000)]
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
kmillikin@chromium.org [Tue, 22 Feb 2011 06:25:01 +0000 (06:25 +0000)]
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
mmaly@chromium.org [Tue, 22 Feb 2011 01:10:28 +0000 (01:10 +0000)]
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
mmaly@chromium.org [Tue, 22 Feb 2011 00:39:21 +0000 (00:39 +0000)]
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
antonm@chromium.org [Mon, 21 Feb 2011 18:28:20 +0000 (18:28 +0000)]
Minor refactoring: unify lazy function compilation for in loop and no in loop variants.
Review URL: http://codereview.chromium.org/6542017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6873
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Mon, 21 Feb 2011 17:17:26 +0000 (17:17 +0000)]
Bug: OS::MemoryMappedFile::open() should not truncate a pre-existing file.
Patch by Mark Lam from Hewlett-Packard Development Company, LP
Review URL: http://codereview.chromium.org/6543039
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6872
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Mon, 21 Feb 2011 16:49:39 +0000 (16:49 +0000)]
Change the baseline compiler to match the Hydrogen graph builder.
The Hydrogen graph translation does not build a branch for unary negation in
an effect context, so the baseline compiler should not do so either.
Review URL: http://codereview.chromium.org/6546050
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6871
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Mon, 21 Feb 2011 16:11:46 +0000 (16:11 +0000)]
Heap::gc_count_, last_gc_count, and kGCsBetweenCleanup should be unsigned
in order to not be vulnerable to overflow issues.
Patch by Mark Lam of Hewlett-Packard Development Company, LP
Review URL: http://codereview.chromium.org/5966001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6870
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Mon, 21 Feb 2011 15:59:23 +0000 (15:59 +0000)]
Implement pixel array elements access in the presence of an
interceptor that does not handle the elements load.
Review URL: http://codereview.chromium.org/6551001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6869
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Mon, 21 Feb 2011 13:27:36 +0000 (13:27 +0000)]
Fix broken build by removing more const qualifiers.
Review URL: http://codereview.chromium.org/6532085
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6867
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Mon, 21 Feb 2011 12:05:17 +0000 (12:05 +0000)]
Remove const qualifier in a few places in the hydrogen IR files.
This is a preparation step for a larger refactoring of the
hydrogen instructions.
Review URL: http://codereview.chromium.org/6542042
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6866
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Mon, 21 Feb 2011 11:58:19 +0000 (11:58 +0000)]
Remove passing tests from ARM test expectations. Yay!
TBR=karlklose@chromium.org
Review URL: http://codereview.chromium.org/6548006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6865
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Mon, 21 Feb 2011 11:55:45 +0000 (11:55 +0000)]
Remove passing tests from expectations. Yay!
Review URL: http://codereview.chromium.org/6488028
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6864
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Mon, 21 Feb 2011 11:32:28 +0000 (11:32 +0000)]
X64 Crankshaft: Add ModI and ModT to x64 optimizing compiler.
Review URL: http://codereview.chromium.org/6548005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6863
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Mon, 21 Feb 2011 11:29:45 +0000 (11:29 +0000)]
Unifying the handling of storing and loading from safepoint stack
slots across architectures.
Review URL: http://codereview.chromium.org/6541051
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6862
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
karlklose@chromium.org [Mon, 21 Feb 2011 10:30:25 +0000 (10:30 +0000)]
ARM: Implement DoMathRound in the lithium code generator.
Review URL: http://codereview.chromium.org/6519051
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6860
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Mon, 21 Feb 2011 07:54:55 +0000 (07:54 +0000)]
x64: implement apply with arguments in lithium backend.
Includes the plumbing to make sure that all calls generated by the macroassembler for lithium will generate record a safepoint.
Review URL: http://codereview.chromium.org/6469053
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6859
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Fri, 18 Feb 2011 16:29:41 +0000 (16:29 +0000)]
Adjust pointer maps for branches when connecting live ranges.
Review URL: http://codereview.chromium.org/6541024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6858
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Fri, 18 Feb 2011 16:16:17 +0000 (16:16 +0000)]
x64: Fix safepoint register index calculation.
We leave room for all registers on the stack so we have to add a bit.
This is not nicely factored and I need to do that. This will fix the breakage and I
will fix the rest on Monday.
TBR=lrn@chromium.org
Review URL: http://codereview.chromium.org/6544017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6857
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Fri, 18 Feb 2011 14:34:17 +0000 (14:34 +0000)]
X64 Crankshaft: Implement MathRound, MathFloor, MathSqrt, and MathPowHalf UnaryMathOperations in optimizing code generator. Remove unneeded bailout on Math.pow(-0, 0.5) from ia32 and x64 platforms - we produce the correct value without bailing out.
Review URL: http://codereview.chromium.org/6532054
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6856
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Fri, 18 Feb 2011 14:22:29 +0000 (14:22 +0000)]
Minor cleanup.
Do not relookup code object and use optimized_code instead
shadowing existing code local.
Review URL: http://codereview.chromium.org/6541020
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6855
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Fri, 18 Feb 2011 14:10:42 +0000 (14:10 +0000)]
Fix presubmit.
TBR=lrn@chromium.org
Review URL: http://codereview.chromium.org/6532055
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6854
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Fri, 18 Feb 2011 14:00:46 +0000 (14:00 +0000)]
x64: Implement regexp literals and string CharCodeAt in lithium backend.
Review URL: http://codereview.chromium.org/6469052
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6853
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Fri, 18 Feb 2011 12:54:43 +0000 (12:54 +0000)]
x64: Implement the missing generic load and store operations.
Review URL: http://codereview.chromium.org/6541019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6852
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Fri, 18 Feb 2011 12:06:52 +0000 (12:06 +0000)]
X64 Crankshaft: Implement LValueOf and (dummy) LArgumentsObject.
Review URL: http://codereview.chromium.org/6542011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6850
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Fri, 18 Feb 2011 10:53:38 +0000 (10:53 +0000)]
Use [[DefineOwnProperty]] to put 'constructor' field on the protoype object.
That better follows ECMA-262 (see 13.2 Creating Function Objects) and allows
to ignore nasty JS accessors for 'constructor' property.
BUG=v8:1172
TEST=test/mjsunit/regress/regress-1172.js
Review URL: http://codereview.chromium.org/6531037
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6849
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Fri, 18 Feb 2011 10:39:02 +0000 (10:39 +0000)]
Add access checks to Object.preventExtensions + add regression test for 1027.
Object.preventExtensions can currently be used cross-domain. With this
change we follow firefox (IE9 has our current behaviour). In addition
this includes a regression test for 1027 and access tests for
Object.seal and Object.freeze.
Review URL: http://codereview.chromium.org/6534019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6848
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mmaly@chromium.org [Thu, 17 Feb 2011 21:56:37 +0000 (21:56 +0000)]
Revert "This is not wrapped for strict mode and builtin functions."
This reverts commit 6845
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6847
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Thu, 17 Feb 2011 21:04:53 +0000 (21:04 +0000)]
Change behavior of global declarations in the presence of setters.
Call accessors in the global object prototype when initializing global
variables. Function declarations are special cased for compatibility
with Safari and setters are not called for them. If this special
casing was not done webkit layout tests would fail.
Make the declaration of global const variables in the presence of
callbacks a redeclaration error.
Handle const context slot declarations conflicting with a CALLBACK as
a redeclaration error. That is, unless it is on a context extension
object which is not a real object and therefore conceptually have no
accessors in prototype chains. Accessors in prototype chains of
context extension objects are explicitly ignored in SetProperty.
Review URL: http://codereview.chromium.org/6534029
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6846
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mmaly@chromium.org [Thu, 17 Feb 2011 17:52:03 +0000 (17:52 +0000)]
This is not wrapped for strict mode and builtin functions.
CallIC and KeyedCallIC do not wrap this when calling builtin
and strict mode functions.
Review URL: http://codereview.chromium.org/6523052
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6845
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Thu, 17 Feb 2011 17:21:59 +0000 (17:21 +0000)]
Make OutOfMemory exception thrown from JS call into FatalProcessOutOfMemory as well.
That unifies the behaviour with CALL_HEAP_FUNCTION macro.
BUG=v8:1165
Review URL: http://codereview.chromium.org/6528050
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6844
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Thu, 17 Feb 2011 16:54:49 +0000 (16:54 +0000)]
Revert change to const and global variable declarations. It causes
may WebKit layout test failures.
I will look into it tomorrow.
TBR=kmillikin@chromium.org
Review URL: http://codereview.chromium.org/6537021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6843
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Thu, 17 Feb 2011 16:33:10 +0000 (16:33 +0000)]
Cygwin support
Patch by Bert Belder.
BUG=v8:64
BUG=v8:964
BUG=v8:1029
Review URL: http://codereview.chromium.org/6525028
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6842
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Thu, 17 Feb 2011 16:30:15 +0000 (16:30 +0000)]
Call accessors in the global object prototype when initializing global
variables.
Make the declaration of global const variables in the presence of
callbacks a redeclaration error.
Handle const context slot declarations conflicting with a CALLBACK as
a redeclaration error. That is, unless it is on a context extension
object which is not a real object and therefore conceptually have no
accessors in prototype chains. Accessors in prototype chains of
context extension objects are explicitly ignored in SetProperty.
Review URL: http://codereview.chromium.org/6519050
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6841
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Thu, 17 Feb 2011 16:02:12 +0000 (16:02 +0000)]
Avoid clobbering register containing name in CompilerStoreGlobal.
Review URL: http://codereview.chromium.org/6519052
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6840
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Thu, 17 Feb 2011 15:25:38 +0000 (15:25 +0000)]
ARM: Port new version of ParallelMove's GapResolver to ARM. Fix error in vstr(DoubleRegister, MemOperand), where it was implemented as a vldr, in r6830.
Review URL: http://codereview.chromium.org/6311010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6839
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Thu, 17 Feb 2011 14:13:25 +0000 (14:13 +0000)]
Revert 6832.
The test contains a syntax error that shouldn't be detected, but it sometimes is.
TBR: kmillikin@chromium.org
Review URL: http://codereview.chromium.org/6519049
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6836
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Thu, 17 Feb 2011 13:05:49 +0000 (13:05 +0000)]
Fix incorrect deoptimization for logical not in an effect context.
The baseline compiler does not materialize a value for expressions of
the form !expr in an effect context so the graph translation should
not produce such an environment, otherwise we risk targeting it by
deoptimization.
BUG=v8:1167
Review URL: http://codereview.chromium.org/6537018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6833
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Thu, 17 Feb 2011 12:23:18 +0000 (12:23 +0000)]
Handle exceptions thrown while parsing lazy functions for inlining.
We currently leave the exception as pending without returning a Failure::Exception() value. This is either caught immediately if running with --debug-code, or caught later by an assert in debug mode.
This change makes the pending exception be cleared before returning from the failed optimization attempt.
BUG=v8::1145
TEST=test/mjsunit/regress/regress-1145.js
Review URL: http://codereview.chromium.org/6524039
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6832
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Thu, 17 Feb 2011 11:06:50 +0000 (11:06 +0000)]
Fix a bug in deoptimization after logical expressions in an effect context.
When deoptimizing to after an expression of the form (expr0 || expr1)
or (expr0 && expr1) in an effect context, the unoptimized code could
incorrectly see the value of the expression.
Handle the short-circuit binary operators specially in effect contexts.
This fixes the issue and will generate better code when the left
subexpression is boolean-valued.
BUG=v8:1166
Review URL: http://codereview.chromium.org/6519046
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6831
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Thu, 17 Feb 2011 10:07:13 +0000 (10:07 +0000)]
ARM: Enable loads and stores of VFP registers with offsets >= 1024 bytes.
Review URL: http://codereview.chromium.org/6530002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6830
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Thu, 17 Feb 2011 07:47:05 +0000 (07:47 +0000)]
ARM: Don't try to flush the icache when there is nothing to flush
The simulator implementation of the icache did not like size being zero.
BUG=v8:1090
Review URL: http://codereview.chromium.org/6526052
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6829
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Wed, 16 Feb 2011 17:40:28 +0000 (17:40 +0000)]
GBDJIT: Do not check unwinding information correctness on x64.
This does not affect correctness of most common use cases.
Review URL: http://codereview.chromium.org/6525053
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6827
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Wed, 16 Feb 2011 15:45:45 +0000 (15:45 +0000)]
X64 Crankshaft: Start using LCallFunction, remove errors in it.
Review URL: http://codereview.chromium.org/6529053
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6826
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Wed, 16 Feb 2011 15:15:52 +0000 (15:15 +0000)]
X64 Crankshaft: Implement LCallFunction.
Review URL: http://codereview.chromium.org/6529052
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6825
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00