ricow@chromium.org [Tue, 15 Feb 2011 13:37:10 +0000 (13:37 +0000)]
x64: Port OSR to the x64 platform.
Review URL: http://codereview.chromium.org/6515012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6791
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Tue, 15 Feb 2011 12:17:53 +0000 (12:17 +0000)]
X64 Crankshaft: Fix another error in pushed registers at safepoints.
Review URL: http://codereview.chromium.org/6525014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6789
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Tue, 15 Feb 2011 12:17:42 +0000 (12:17 +0000)]
Fix FastPixelArrayStore on X64 platform.
TEST=test-api/PixelArray
Review URL: http://codereview.chromium.org/6529014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6788
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
karlklose@chromium.org [Tue, 15 Feb 2011 10:50:09 +0000 (10:50 +0000)]
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
ricow@chromium.org [Tue, 15 Feb 2011 10:39:22 +0000 (10:39 +0000)]
Add access check when Object.keys is called on the global js proxy (fixes issue 1154)
I will land access checks for a range of ES5 features in another patch (we added a bunch of cases like this in the past few weeks, i.e., cases where we simply use the global object instead of the js global proxy).
Review URL: http://codereview.chromium.org/6499013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6786
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
karlklose@chromium.org [Tue, 15 Feb 2011 10:22:24 +0000 (10:22 +0000)]
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
karlklose@chromium.org [Tue, 15 Feb 2011 08:47:14 +0000 (08:47 +0000)]
ARM: Enable OSR by default.
Review URL: http://codereview.chromium.org/6526012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6784
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Tue, 15 Feb 2011 07:58:04 +0000 (07:58 +0000)]
Refactor construction of polymorphic loads, stores, and calls.
Rather than passing in a pair of unequal-length lists, pass the default
subgraph separately. Construct the typecase from the top down rather than
the bottom up, so it doesn't need an intermediate zone list.
Also, change a basic block's 'last' instruction field to really be its last
instruction by correctly updating it when inserting and removing
instructions.
Review URL: http://codereview.chromium.org/6516016
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6783
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mmaly@chromium.org [Mon, 14 Feb 2011 23:41:47 +0000 (23:41 +0000)]
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
danno@chromium.org [Mon, 14 Feb 2011 21:21:33 +0000 (21:21 +0000)]
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
mmaly@chromium.org [Mon, 14 Feb 2011 18:44:26 +0000 (18:44 +0000)]
Strict mode delete of unqualified identifier.
SyntaxError is reported in strict mode when deleting
an unqualified identifier. (11.4.1 of Ecma-262 5th ed)
Review URL: http://codereview.chromium.org/6516003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6780
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Mon, 14 Feb 2011 18:34:05 +0000 (18:34 +0000)]
X64 Crankshaft: Fix bug in pushed registers at safepoints. Fixes issue 1153 completely.
BUG=1153
TEST=mjsunit/mul-exhaustive
TBR=kmillikin@chromium.org
Review URL: http://codereview.chromium.org/6475012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6779
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mmaly@chromium.org [Mon, 14 Feb 2011 17:33:06 +0000 (17:33 +0000)]
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
antonm@chromium.org [Mon, 14 Feb 2011 17:25:12 +0000 (17:25 +0000)]
Introduce new runtime function to make join with lower memory usage.
Do not use generic StringBuilderConcat which requires array passed
to keep both elements and separator (which roughly double size
of the array). That should be faster as well.
BUG=crbug.com/54580
Review URL: http://codereview.chromium.org/6520004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6777
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Mon, 14 Feb 2011 16:02:02 +0000 (16:02 +0000)]
X64 Crankshaft: Fix error in pushed register indices for safepoints. Fixes issue 1153.
BUG=1153
TEST=mjsunit/date-parse
Review URL: http://codereview.chromium.org/6518007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6776
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Mon, 14 Feb 2011 13:57:15 +0000 (13:57 +0000)]
X64 Crankshaft: Add test that fails on x64 Crankshaft build to list of skipped mjsunit tests. Fix comments and remove unused function from date.js.
BUG=1153
TEST=mjsunit/date-parse
Review URL: http://codereview.chromium.org/6516011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6775
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Mon, 14 Feb 2011 13:39:53 +0000 (13:39 +0000)]
Change kPointerSize to kIntSize in ia32 specific stack check patching.
The call uses a 32 bit displacement relative to the next instruction. Althoug this has no actual impact on the 32 bit platform I think this is more correct (and will make the x64 and ia32 code more alike).
Review URL: http://codereview.chromium.org/6515011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6774
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Mon, 14 Feb 2011 13:13:41 +0000 (13:13 +0000)]
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
kmillikin@chromium.org [Mon, 14 Feb 2011 12:51:25 +0000 (12:51 +0000)]
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
ager@chromium.org [Mon, 14 Feb 2011 12:34:11 +0000 (12:34 +0000)]
More x64 work.
x64: Implement DoArgumentsElements, DoNumberUntagD, DoArgumentsLength,
DoAccessArgumentsAt, DoStringLength in lithium x64 backend.
Fix a bug in DoConstantD where only 32-bits of a double was loaded to
an xmm register.
Review URL: http://codereview.chromium.org/6474039
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6771
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
karlklose@chromium.org [Mon, 14 Feb 2011 12:07:48 +0000 (12:07 +0000)]
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
whesse@chromium.org [Mon, 14 Feb 2011 11:42:06 +0000 (11:42 +0000)]
Add ArithmeticD instruction to x64 Crankshaft.
Review URL: http://codereview.chromium.org/6515010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6767
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Mon, 14 Feb 2011 10:43:21 +0000 (10:43 +0000)]
Use ForceSetObjectProperty in DefineOrRedefineDataProperty (fixes crbug 72736).
The current version uses SetObjectProperty which will not set the
value in case this is a readonly property. The spec explictly says
that a configurable but non writable property can have its value
changed with Object.defineProperty (because the same thing can be
accomplished by doing 3 calls (set writable to true, update the value,
set writable to false).
Review URL: http://codereview.chromium.org/6518004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6766
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Mon, 14 Feb 2011 09:37:56 +0000 (09:37 +0000)]
Do not allow calls to SetProtoType on functions that should not have a prototype (fixes issue 1151)
Review URL: http://codereview.chromium.org/6518003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6765
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Mon, 14 Feb 2011 09:32:33 +0000 (09:32 +0000)]
Prepare push to trunk. We are now working on version 3.1.5.
Review URL: http://codereview.chromium.org/6484030
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6764
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Mon, 14 Feb 2011 09:23:26 +0000 (09:23 +0000)]
Small cleanup of unused code in hydrogen IR.
Review URL: http://codereview.chromium.org/6513008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6763
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Mon, 14 Feb 2011 07:49:13 +0000 (07:49 +0000)]
Add support for the global object in Object.keys (fixes issue 1150)
We do not currently handle the case where the JSGlobalProxy is passed
as argument to LocalKeys in runtime.cc.
Review URL: http://codereview.chromium.org/6516008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6762
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
karlklose@chromium.org [Sun, 13 Feb 2011 18:39:14 +0000 (18:39 +0000)]
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
mmaly@chromium.org [Sun, 13 Feb 2011 16:19:53 +0000 (16:19 +0000)]
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
karlklose@chromium.org [Sun, 13 Feb 2011 13:49:57 +0000 (13:49 +0000)]
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
karlklose@chromium.org [Sun, 13 Feb 2011 10:24:39 +0000 (10:24 +0000)]
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
mmaly@chromium.org [Fri, 11 Feb 2011 23:25:07 +0000 (23:25 +0000)]
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
mmaly@chromium.org [Fri, 11 Feb 2011 21:39:59 +0000 (21:39 +0000)]
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
fschneider@chromium.org [Fri, 11 Feb 2011 14:34:02 +0000 (14:34 +0000)]
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
antonm@chromium.org [Fri, 11 Feb 2011 14:26:56 +0000 (14:26 +0000)]
Properly treat exceptions thrown while compiling.
BUG=v8:1132
TEST=test/mjsunit/regress/regress-1132.js
Review URL: http://codereview.chromium.org/6487021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6754
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Fri, 11 Feb 2011 14:23:47 +0000 (14:23 +0000)]
Fix code.google.com/p/chromium/issues/detail?id=72555 incorrect
value for Math.LOG10E
Review URL: http://codereview.chromium.org/6489027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6753
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sandholm@chromium.org [Fri, 11 Feb 2011 13:30:37 +0000 (13:30 +0000)]
Fix sputnik regression introduced in r6747.
Review URL: http://codereview.chromium.org/6485025
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6752
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Fri, 11 Feb 2011 13:20:06 +0000 (13:20 +0000)]
Remove the uses of the arguments from all calls.
Before, Hydrogen call instructions had uses of the PushArgument instructions
for their arguments. These operands were unneeded, bloated the IR, and
caused calls to be the only Hydrogen instructions with an unpredictable
number of operands.
Now, PushArgument is a pure side-effecting instruction that has no uses.
Review URL: http://codereview.chromium.org/6480030
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6749
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Fri, 11 Feb 2011 12:56:30 +0000 (12:56 +0000)]
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
sandholm@chromium.org [Fri, 11 Feb 2011 12:33:30 +0000 (12:33 +0000)]
Improve StringIndexOf.
Review URL: http://codereview.chromium.org/6489028
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6747
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Fri, 11 Feb 2011 12:25:41 +0000 (12:25 +0000)]
removed
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6746
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Fri, 11 Feb 2011 11:57:11 +0000 (11:57 +0000)]
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
kmillikin@chromium.org [Fri, 11 Feb 2011 11:24:38 +0000 (11:24 +0000)]
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
sgjesse@chromium.org [Fri, 11 Feb 2011 10:36:58 +0000 (10:36 +0000)]
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
kmillikin@chromium.org [Fri, 11 Feb 2011 10:17:52 +0000 (10:17 +0000)]
Prohibit moving instructions with side effects via 'EmitAtUses'.
It's not generally safe to decide to delay the evaluation of an expression
with side effects until it is used.
BUG=v8:1138
Review URL: http://codereview.chromium.org/6474035
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6742
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Thu, 10 Feb 2011 20:04:54 +0000 (20:04 +0000)]
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
ricow@chromium.org [Thu, 10 Feb 2011 16:45:03 +0000 (16:45 +0000)]
Fix presubmit.
TBR: ager
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6736
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Thu, 10 Feb 2011 16:43:01 +0000 (16:43 +0000)]
Fix typo in ASSERT in object-verifier for RegExp.
BUG=v8::1129
TEST=test/mjsunit/regress/regress-1129.js
Review URL: http://codereview.chromium.org/6476027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6735
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Thu, 10 Feb 2011 16:33:01 +0000 (16:33 +0000)]
X64: Add DoCallNamed, DoContext, DoCallGlobal, and DoLoadFunctionPrototype lithium instructions.
Review URL: http://codereview.chromium.org/6471025
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6734
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Thu, 10 Feb 2011 16:26:44 +0000 (16:26 +0000)]
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
ricow@chromium.org [Thu, 10 Feb 2011 16:13:21 +0000 (16:13 +0000)]
X64: Add VisitGlobalPropertyCell to the relocinfo visitor.
This fixes GC issues when in the threading tests.
Review URL: http://codereview.chromium.org/6478026
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6732
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Thu, 10 Feb 2011 15:17:38 +0000 (15:17 +0000)]
X64: Fix Generate_NotifyLazyDeoptimized to actually call with the LAZY flag.
This should fix the flaky cctest failure on the debug run of x64 with
crankshaft enabled.
Review URL: http://codereview.chromium.org/6480032
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6731
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Thu, 10 Feb 2011 15:02:13 +0000 (15:02 +0000)]
Bypass JS accessors when building error array.
In the presence of JS accessors for elements on Object.prototype JSArray::SetFastElement
may throw or its behaviour can be altered. Instead operate on plain FixedArrays and
turn them into JSArry later.
BUG=v8:1130
TEST=test/mjsunit/regress/regress-1130.js
Review URL: http://codereview.chromium.org/6481001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6730
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Thu, 10 Feb 2011 14:41:16 +0000 (14:41 +0000)]
Fix various places which do not check if SetProperty threw an exception.
Review URL: http://codereview.chromium.org/6480003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6729
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Thu, 10 Feb 2011 14:09:52 +0000 (14:09 +0000)]
Fix forging of object's identity hashes.
Do not do standard property lookup on hidden properties object as it might
reach Object.prototype which can be altered to forge identity hashes.
Instead do only local lookup.
Review URL: http://codereview.chromium.org/6472001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6728
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Thu, 10 Feb 2011 12:33:51 +0000 (12:33 +0000)]
Check holder before optimizing calls to global functions.
In the case where the function is not found in the global object,
we have to generate a generic call.
BUG=v8:1106
TEST=mjsunit/regress/regress-1106.js
Review URL: http://codereview.chromium.org/6483010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6727
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Thu, 10 Feb 2011 12:33:34 +0000 (12:33 +0000)]
Bailout from PrepareSlowElementsForSort when hiting a key outside of smi-range.
BUG=v8:1131
TEST=test/mjsunit/regress/regress-1131.js
Review URL: http://codereview.chromium.org/6469006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6726
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
danno@chromium.org [Thu, 10 Feb 2011 12:02:36 +0000 (12:02 +0000)]
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
fschneider@chromium.org [Thu, 10 Feb 2011 10:31:55 +0000 (10:31 +0000)]
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
kmillikin@chromium.org [Thu, 10 Feb 2011 10:28:59 +0000 (10:28 +0000)]
Fix a representation change bug in the Hydrogen graph construction.
We could try to treat an HPhi as an HInstruction because the code did
not properly handle the case of a phi in a block with itself as one of
the predecessors.
BUG=v8:1134
Review URL: http://codereview.chromium.org/6471020
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6721
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Thu, 10 Feb 2011 09:16:33 +0000 (09:16 +0000)]
Insert a space to please our presubmit overlords.
Review URL: http://codereview.chromium.org/6480027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6715
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Thu, 10 Feb 2011 09:12:38 +0000 (09:12 +0000)]
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
kmillikin@chromium.org [Thu, 10 Feb 2011 09:00:50 +0000 (09:00 +0000)]
Allow esi to be an allocatable register on IA32.
Make esi available to the register allocator rather than dedicating it
permanently to the context.
The context is still passed in register esi to JavaScript and to the runtime
as part of the calling convention. Because some stubs might end up calling
JS or the runtime, it is also conservatively passed to stubs.
Roughly half the calls have been modified to use the context as an input
value in fixed register esi. The other half are marked as calls or deferred
code so esi is spilled and can be explicitly set.
It is no longer necessary to restore the context to esi after a call that
might change it.
Review URL: http://codereview.chromium.org/6452001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6713
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Thu, 10 Feb 2011 07:47:28 +0000 (07:47 +0000)]
Shorten constructor names in JS tickprocessor.
As they are no more used in DevTools profiler, there is no
need to prefix them with "devtools.profiler" namespace.
Review URL: http://codereview.chromium.org/6456025
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6712
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Wed, 9 Feb 2011 19:34:04 +0000 (19:34 +0000)]
Do not invoke any setters when forming stack trace JS object.
Review URL: http://codereview.chromium.org/6463022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6709
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Wed, 9 Feb 2011 19:09:26 +0000 (19:09 +0000)]
Reapply code.google.com/p/v8/source/detail?r=6555
Compare JSObjects by identity immediately.
When invoking EQUALS JS builtin, 1st argument is passed as a receiver and
if it's a global object, it gets overwritten with global proxy object and
thus one gets incorrect results.
BUG=v8:1082
TBR=ricow@chromium.org
Review URL: http://codereview.chromium.org/6461028
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6708
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Wed, 9 Feb 2011 16:43:23 +0000 (16:43 +0000)]
Make optimized Function.prototype.apply safe for non-JSObject first arguments.
If we have a property access of the form this.x, where the access site sees
the global object, we can specialize the IC stub so that it performs a map
check without first performing a heap object check.
Ensure that we do not get in JS code with a non-JSObject this value by
deoptimizing at Function.prototype.apply if the first argument is not a
JSObject.
BUG=v8:1128
Review URL: http://codereview.chromium.org/6463025
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6707
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Wed, 9 Feb 2011 15:58:55 +0000 (15:58 +0000)]
Make VS2005 project files compile without errors: changelist codereview.chromium.org/6286135/.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6706
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Wed, 9 Feb 2011 15:50:39 +0000 (15:50 +0000)]
Add a regression test for issue 1106, optimized access to the prototype chain of the global object.
Review URL: http://codereview.chromium.org/6459023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6705
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 9 Feb 2011 14:57:24 +0000 (14:57 +0000)]
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
ager@chromium.org [Wed, 9 Feb 2011 14:51:38 +0000 (14:51 +0000)]
x64: Enable inline smi code patching to reenable the inlined code in
the code generated by the full code generator after my previous
change.
The generated code is the same as on ia32 and so is the patching.
Review URL: http://codereview.chromium.org/6456023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6703
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Wed, 9 Feb 2011 14:41:22 +0000 (14:41 +0000)]
Prepare push to trunk. Now working on version 3.1.4.
Review URL: http://codereview.chromium.org/6458026
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6702
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Wed, 9 Feb 2011 14:16:25 +0000 (14:16 +0000)]
Fix incorrect asserts in scanner.
BUG=v8::1126
TEST=test/mjsunit/regress/regress-1126.js
Review URL: http://codereview.chromium.org/6459021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6701
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
floitschV8@gmail.com [Wed, 9 Feb 2011 14:12:31 +0000 (14:12 +0000)]
Add two tests to strtod.
Review URL: http://codereview.chromium.org/6461018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6700
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Wed, 9 Feb 2011 13:56:35 +0000 (13:56 +0000)]
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
whesse@chromium.org [Wed, 9 Feb 2011 13:16:40 +0000 (13:16 +0000)]
Fix typo in r6697: Use assertThrows correctly in the added test regress-1122.js.
Review URL: http://codereview.chromium.org/6460030
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6698
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Wed, 9 Feb 2011 12:46:22 +0000 (12:46 +0000)]
Fix a bug that occurs when functions are defined with more than 16,382 parameters.
Review URL: http://codereview.chromium.org/6447007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6697
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Wed, 9 Feb 2011 12:39:15 +0000 (12:39 +0000)]
Change the code for materializing double constants on ia32.
Instead of using the stack, use a temporary integer register
and avoid memory access.
Review URL: http://codereview.chromium.org/6452002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6696
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Wed, 9 Feb 2011 12:35:18 +0000 (12:35 +0000)]
Change our zap values from hex numbers tagged as a heap object to hex numbers tagged as a failure.
Since our zap values are valid heap object addreses we might hit asserts if a heap object gets the value of a zap constant as its address.
Review URL: http://codereview.chromium.org/6456022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6695
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Wed, 9 Feb 2011 11:45:50 +0000 (11:45 +0000)]
Fix an assertion failure in stack trace construction.
When constructing stack traces we interpret the deoptimization data for
optimized frames to find the receiver value. This value could sometimes be
eliminated from the deoptimization data if we though it was unused.
BUG=v8:1118
Review URL: http://codereview.chromium.org/6465023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6694
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Wed, 9 Feb 2011 11:38:10 +0000 (11:38 +0000)]
Use GC-safe version when setting elements.
BUG=1125
TEST=test/mjsunit/regress/regress-1125.js
Review URL: http://codereview.chromium.org/6463001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6693
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Tue, 8 Feb 2011 20:13:08 +0000 (20:13 +0000)]
Do sanity check of exception state when returning from native to JS.
If --debug-code is on, check that returned value and Top::has_pending_exception
agree on exception state.
Review URL: http://codereview.chromium.org/6450004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6692
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Tue, 8 Feb 2011 19:56:44 +0000 (19:56 +0000)]
Check if Array.prototype.__proto__ has been reset to null.
BUG=v8:1121
TEST=test/mjsunit/regress/regress-1121.js
Review URL: http://codereview.chromium.org/6454004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6691
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Tue, 8 Feb 2011 19:42:24 +0000 (19:42 +0000)]
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
antonm@chromium.org [Tue, 8 Feb 2011 19:42:14 +0000 (19:42 +0000)]
Propagate exceptions thrown when setting elements.
Plus use more robust path when formatting messages---work
directly with fixed arrays.
BUG=v8:1107
TEST=test/mjsunit/getter-in-prototype.js,test/mjsunit/regress/regress-1107.js
Review URL: http://codereview.chromium.org/6451004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6689
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Tue, 8 Feb 2011 19:19:42 +0000 (19:19 +0000)]
We cannot assert that v8 is running in fatal error callback.
BUG=v8:1111
Review URL: http://codereview.chromium.org/6450005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6688
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Tue, 8 Feb 2011 19:04:17 +0000 (19:04 +0000)]
1) Return failure if any of property sets failed;
2) We cannot assert the declared property will go to the extension in the presence of callbacks and interceptors.
BUG=1119
TEST=test/mjsunit/regress/regress-1119.js
Review URL: http://codereview.chromium.org/6454011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6687
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Tue, 8 Feb 2011 18:46:13 +0000 (18:46 +0000)]
Fix wrong assumption in parser that parsing a function literal cannot throw an exception.
Review URL: http://codereview.chromium.org/6453009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6686
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Tue, 8 Feb 2011 18:09:19 +0000 (18:09 +0000)]
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
vegorov@chromium.org [Tue, 8 Feb 2011 17:25:40 +0000 (17:25 +0000)]
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
ager@chromium.org [Tue, 8 Feb 2011 16:31:58 +0000 (16:31 +0000)]
Fix issues with using defineProperty on the global proxy object.
Review URL: http://codereview.chromium.org/6452004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6683
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Tue, 8 Feb 2011 15:51:49 +0000 (15:51 +0000)]
Prepare for bailout with the proper state at labeled block entries.
The state here should be NO_REGISTERS. It was spuriously changed to from
NO_REGISTERS to TOS_REG when TOS_EAX was renamed to TOS_REG.
BUG=v8:1113
Review URL: http://codereview.chromium.org/6452007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6682
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Tue, 8 Feb 2011 14:37:50 +0000 (14:37 +0000)]
x64: Add MulI and DivI to lithium instructions.
Review URL: http://codereview.chromium.org/6448001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6681
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Tue, 8 Feb 2011 14:04:27 +0000 (14:04 +0000)]
Correct propagation of exceptions from setters.
BUG=v8:1105
TEST=test/mjsunit/regress/regress-1105.js
Review URL: http://codereview.chromium.org/6451003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6680
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Tue, 8 Feb 2011 14:00:22 +0000 (14:00 +0000)]
Fix a possible duplicate AST ID for deoptimization.
For redeclarations of variables that alias the parameters in functions
using arguments, we need to avoid re-visiting the shared variable
rewrite.
BUG=v8:1104
Review URL: http://codereview.chromium.org/6453004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6679
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Tue, 8 Feb 2011 13:28:09 +0000 (13:28 +0000)]
Bailout from crankshaft if a global property is found in the prototype chain of the global object, not on the global object itself.
Review URL: http://codereview.chromium.org/6449002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6678
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Tue, 8 Feb 2011 13:09:07 +0000 (13:09 +0000)]
Make sure that we do not call is_extensible on the global proxy.
When calling Object.isExtensible we did not do a check for the global
js proxy. This caused the check on the extensible bit on the map to
return true, even when the bit was set to false on the global js
object.
Review URL: http://codereview.chromium.org/6450003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6677
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Tue, 8 Feb 2011 13:01:34 +0000 (13:01 +0000)]
Speedup decodeURI/decodeURIComponent by switching from charAt(i) to charCodeAt(i) in Decode.
Original patch by Alexander Karpinsky.
Review URL: http://codereview.chromium.org/6440001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6676
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Tue, 8 Feb 2011 12:41:16 +0000 (12:41 +0000)]
Make sure that we never call prevent extension on the global proxy,
but instead call this on the global object.
BUG: 1103
Review URL: http://codereview.chromium.org/6454001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6675
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Tue, 8 Feb 2011 11:38:15 +0000 (11:38 +0000)]
Fix bug in JSON.parse for objects containing "__proto__" as key.
It added the __proto__ key as a normal key, which made it visible
in enumeration, while reading still hit the hard-coded accessor.
Review URL: http://codereview.chromium.org/6451002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6674
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00