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
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
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
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
kmillikin@chromium.org
123dbb2f5e
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
2011-02-21 16:49:39 +00:00
ager@chromium.org
ea0dda89bb
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
2011-02-21 11:29:45 +00:00
karlklose@chromium.org
24b73a04b0
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
2011-02-21 10:30:25 +00:00
whesse@chromium.org
4752373976
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
2011-02-18 12:06:52 +00:00
mmaly@chromium.org
f0df4a6c9e
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
2011-02-17 21:56:37 +00:00
mmaly@chromium.org
bb7b014988
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
2011-02-17 17:52:03 +00:00
whesse@chromium.org
3245a23de0
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
2011-02-17 15:25:38 +00:00
whesse@chromium.org
2642168331
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
2011-02-17 10:07:13 +00:00
sgjesse@chromium.org
fd0744844e
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
2011-02-17 07:47:05 +00:00
sgjesse@chromium.org
f622a23254
ARM: Remove crankshaft dependency on the generic binary operation stub
...
The crankshaft code now only relies on the type recording binary operation stub.
Added check for overwritable heap number in the type recording binary operation stub.
Review URL: http://codereview.chromium.org/6529050
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6823 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-16 14:48:41 +00:00
danno@chromium.org
12b4e0efe7
Implement crankshaft support for pixel array stores.
...
Review URL: http://codereview.chromium.org/6528013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6817 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-16 13:31:12 +00:00
sgjesse@chromium.org
4ce06204f9
ARM: Add inlined smi binary operations in full code generator
...
Review URL: http://codereview.chromium.org/6529022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6806 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-16 09:20:16 +00:00
lrn@chromium.org
abbcadf221
Fix non-simulated ARM calling of RegExp code.
...
Review URL: http://codereview.chromium.org/6526043
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6805 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-16 09:18:19 +00:00
karlklose@chromium.org
7de60ef84d
ARM: Implement GetCachedArrayIndex in the lithium code generator.
...
Add GetCachedArrayIndex to the Hydrogen instruction set and implement GetCachedArrayIndex in the lithium code generator. The x64 and ia32 code generators implementations abort in the chunk builder.
Review URL: http://codereview.chromium.org/6499014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6803 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-16 08:21:45 +00:00
mmaly@chromium.org
582cf097e9
Strict mode "this" transformation in Function.call/Function.apply.
...
In strict mode the transformation of "this" is skipped.
Code review feedback.
Testing memory operand against 8 bit IMM on ia32 and x64.
Review URL: http://codereview.chromium.org/6524006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6799 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-15 18:57:37 +00:00
lrn@chromium.org
b4fd72b335
Change native RegExp call code to properly set C++ structures and
...
to handle exceptions on return from RegExp.
BUG=1108
TEST=
Review URL: http://codereview.chromium.org/6489001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6794 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-15 13:53:51 +00:00
karlklose@chromium.org
b9f83f91af
Fix ARM debug build: remove ASSERT.
...
TBR=ricow@
Review URL: http://codereview.chromium.org/6528011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6787 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-15 10:50:09 +00:00
karlklose@chromium.org
6008d59392
ARM: Implement DoHasCachedArrayIndex and DoHasCachedArrayIndexAndBranch.
...
Review URL: http://codereview.chromium.org/6519009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6785 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-15 10:22:24 +00:00
mmaly@chromium.org
9adaeb6a17
Strict mode delete of non-configurable property.
...
Strict mode flag is passed to runtime DELETE function
and then to JSObject::Delete(Property/Element) as STRICT_DELETION enum.
When deleting non-configurable property/eleemnt, TypeError is thrown.
Adding mozilla test to .gitignore.
Incorporate CR feedback.
Review URL: http://codereview.chromium.org/6515005/
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6782 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-14 23:41:47 +00:00
danno@chromium.org
36088cb64f
Implement specialized IC code stubs for pixel array stores.
...
Review URL: http://codereview.chromium.org/6478027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6781 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-14 21:21:33 +00:00
mmaly@chromium.org
3711b87e8c
Refactoring codegen for delete.
...
* keep handling of VariableProxy and Property together
* place clauses in the order of discovery
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6778 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-14 17:33:06 +00:00
fschneider@chromium.org
ad70b7de39
Fix a potential crash bug in keyed calls for non-string keys.
...
BUG=v8:1146
Review URL: http://codereview.chromium.org/6517010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6773 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-14 13:13:41 +00:00
kmillikin@chromium.org
c73ce4f126
Fix a duplicate AST ID recorded for for/in.
...
Avoid visiting the subexpressions of a variable that rewrites to a property
when occurring as the 'left-hand side' of for/in.
BUG=v8:1149
Review URL: http://codereview.chromium.org/6475009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6772 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-14 12:51:25 +00:00
karlklose@chromium.org
e0552d77cf
ARM: Implement PatchStackCheckCodeAt and RevertStackCheckCode.
...
Remove a failing test expectation from mjsunit.status.
Review URL: http://codereview.chromium.org/6410029
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6770 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-14 12:07:48 +00:00
karlklose@chromium.org
d52e6f7649
Revert r6759.
...
TBR=sgjesse@chromium.org
Review URL: http://codereview.chromium.org/6484025
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6761 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-13 18:39:14 +00:00
mmaly@chromium.org
e0be3072b5
Implement assignment to undefined reference in ES5 Strict Mode.
...
Strict mode assignment to undefined reference.
Simple assignments (x = <value>) use CODE_TARGET_CONTEXT.
StoreIC stores its own strictness in extra_ic_state.
The strcitness is propagated as further ic stubs are generated.
Details:
* ReferenceError on assignment to non-resolvable reference in strict mode.
* Fix es5conform test expectation file.
* Add es5conform test suite into .gitignore.
* Fix Xcode project.
* Change implemented in virtual frame code generator, as well as full-codegen
for all architectures.
* Fix debugger test.
* Fix comment for CODE_TARGET_CONTEXT
* Implement remaining StoreIC stubs to be strict mode aware.
* Trace extra_ic_state() for ic code stubs.
Code Review URL: http://codereview.chromium.org/6474026/
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6760 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-13 16:19:53 +00:00
karlklose@chromium.org
26df17e714
ARM: Implement PatchStackCheckCodeAt and RevertStackCheckCode.
...
This patch also adds platform independent CPU instruction cache flushing.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/6410029
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6759 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-13 13:49:57 +00:00
karlklose@chromium.org
dd68fcc7ab
ARM: Implement OSR infrastructure.
...
Review URL: http://codereview.chromium.org/6460034
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6758 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-13 10:24:39 +00:00
mmaly@chromium.org
3f4701df7f
Revert r6756. Check failed on V8 arm - debug - crankshaft.
...
Need to investigate.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6757 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-11 23:25:07 +00:00
mmaly@chromium.org
fd6338bdda
Implement assignment to undefined reference in ES5 Strict Mode.
...
Strict mode assignment to undefined reference.
Simple assignments (x = <value>) use CODE_TARGET_CONTEXT.
StoreIC stores its own strictness in extra_ic_state.
The strcitness is propagated as further ic stubs are generated.
Details:
* ReferenceError on assignment to non-resolvable reference in strict mode.
* Fix es5conform test expectation file.
* Add es5conform test suite into .gitignore.
* Fix Xcode project.
* Change implemented in virtual frame code generator, as well as full-codegen
for all architectures.
* Fix debugger test.
* Fix comment for CODE_TARGET_CONTEXT
* Implement remaining StoreIC stubs to be strict mode aware.
* Trace extra_ic_state() for ic code stubs.
Code Review URL: http://codereview.chromium.org/6474026/
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6756 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-11 21:39:59 +00:00
fschneider@chromium.org
56f6cbbeae
Revert r6748.
...
I'm seeing some crashes after this change which I need to investigate.
Review URL: http://codereview.chromium.org/6486033
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6755 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-11 14:34:02 +00:00
fschneider@chromium.org
bbba0dbd61
Add a genuine unary minus instruction to Crankshaft.
...
This change introduces an instruction for negation instead
of generating a multiplication with -1.
The code for x64 and ARM is not included in this change.
Review URL: http://codereview.chromium.org/6461021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6748 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-11 12:56:30 +00:00
kmillikin@chromium.org
2e08148b06
Fix the semantics of delete on parameters.
...
Before, an attempt to delete a parameter in a function that used the
arguments object in any way would succeed with true and delete both
the parameter and the corresponding arguments object property.
Now, an attempt to delete such a parameter does not delete and
evaluates to false.
Parameters can be deleted, as before, from functions that use the
arguments object, by deleting the corresponding arguments object
property (this is a spec violation).
BUG=fixes v8:1136
Review URL: http://codereview.chromium.org/6484023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6745 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-11 11:57:11 +00:00
kmillikin@chromium.org
bea46a2723
Port bug fixes to optimized Function.prototype.apply to ARM.
...
There were a couple of bug fixes to this code on IA32 which have not yet
been ported to ARM. They are: failure to correctly handle non-JSObject
receivers and failure to restore the context register after calling JS code.
Review URL: http://codereview.chromium.org/6479019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6744 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-11 11:24:38 +00:00
sgjesse@chromium.org
e3fd635f26
Small cleanup of bug ids
...
Review URL: http://codereview.chromium.org/6486028
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6743 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-11 10:36:58 +00:00
sgjesse@chromium.org
505b46753e
ARM: Add shift operations to the type recording binary operation stub
...
Review URL: http://codereview.chromium.org/6471023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6737 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-10 20:04:54 +00:00
ricow@chromium.org
091237ce5b
Port revision 6732 to arm.
...
I discussed with Soeren, and they do need this on arm as well.
Review URL: http://codereview.chromium.org/6478029
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6733 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-10 16:26:44 +00:00
danno@chromium.org
1bd9f602be
Implement crankshaft support for pixel array loads.
...
Review URL: http://codereview.chromium.org/6410112
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6725 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-10 12:02:36 +00:00
fschneider@chromium.org
73fe82426f
Strengthen requirements for fixed registers at calls.
...
Already done on ia-32. This change is for x64 and ARM.
We now always require fixed input registers at calls to
avoid overlap with temp registers.
This fixes the affected instructions on ARM.
Review URL: http://codereview.chromium.org/6471021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6722 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-10 10:31:55 +00:00
fschneider@chromium.org
de06cd58a3
Fix bug in register requirements for function.apply.
...
Whenever we use a fixed temp at a call that can eagerly deopt we
now allow fixed register exclusively to avoid any overlap.
Review URL: http://codereview.chromium.org/6479014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6714 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-10 09:12:38 +00:00
sgjesse@chromium.org
dabc590527
ARM: Add type-feedback recording for compare
...
Change the comparison in the full code generator to use CompareIC instead of the CompareStub to record the types. This also implements the patching in the full code generator where the inlined smi code is de-activated by default to call the CompareIC once and then activating the inlined smi code by patching the code.
Fixed the smi comparison in the ICCompareStub.
Fixed ToBooleanStub to ensure that the scratch register used is not the input. Use r9 as default as that will never be input with Crankshaft.
Implemented lithium instruction CmpTAndBranch.
Make sure that the lithium instruction CmpID have operands in registrers as the current optimized code expects that.
Review URL: http://codereview.chromium.org/6461017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6704 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-09 14:57:24 +00:00
whesse@chromium.org
8d3d77055c
Fix assert error on ARM triggered by large numbers of function parameters.
...
Review URL: http://codereview.chromium.org/6458027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6699 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-09 13:56:35 +00:00
ager@chromium.org
40dd216b53
Port fix for duplicate AST ID for deoptimization to ARM and x64.
...
Review URL: http://codereview.chromium.org/6458001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6690 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-08 19:42:24 +00:00
ager@chromium.org
a9a9111938
ARM: Fix condition usage in DeoptimizeIf().
...
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/6447003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6685 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-08 18:09:19 +00:00
vegorov@chromium.org
721b60d3f5
Check for overflow when bumping new space's top in inlined allocation.
...
BUG=v8:1109
TEST=test/mjsunit/regress/regress-1109.js
Review URL: http://codereview.chromium.org/6453005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6684 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-08 17:25:40 +00:00