Commit Graph

6512 Commits

Author SHA1 Message Date
jkummerow@chromium.org
669bfc0363 Optimize JS date implementation for smi-only arrays
Review URL: http://codereview.chromium.org/8409010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9848 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-31 14:39:21 +00:00
danno@chromium.org
0766a138a6 Add and use ElementsKind side effect
Also partition side effects into observable and not observable, with only observable requiring Simulates and non-observable changes able to participate in GVN and code hoisting.

BUG=none
TEST=none

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9847 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-31 14:15:10 +00:00
fschneider@chromium.org
0df9569fe5 Merge IR classes for different bitwise operations AND, OR and XOR into one class.
Since we already have only one LIR class, it does not make much sense to separate
them at the HIR level.
Review URL: http://codereview.chromium.org/8426005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9846 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-31 13:06:26 +00:00
kmillikin@chromium.org
d00b82ff91 MIPS: updated atomic operations.
Specifically:
-fixed a bug in CompareAndSwap that caused randomly occuring timeouts on MIPS boards.
-added gcc inline asm control push/pop instructions to correctly save/restore the reorder setting instead of simply assuming it should be enabled.
-reordered/optimized some instructions to utilize MIPS-specific pipelining features (branch delay slot).
-fixed improper usage of write barriers

BUG=
TEST=

Review URL: http://codereview.chromium.org/8413073
Patch from Gergely Kis <gergely@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9845 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-31 12:47:02 +00:00
kmillikin@chromium.org
ee3197d309 MIPS: Handlify CompileConstructStub and the remaining CallStubCompiler functions.
Port r9837 (38061af).
Port r9834 (95ac04).

Original commit message (r9834):
Also, handlify functions for loading with interceptors and callbacks.
Remove some unneeded code.  Rename Foreign::address() because it
confusingly shadows HeapObject::address() which does something quite
different.

BUG=
TEST=

Review URL: http://codereview.chromium.org/8400087
Patch from Gergely Kis <gergely@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9844 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-31 12:36:11 +00:00
kmillikin@chromium.org
3ba063197d MIPS: Fixed wrong register usage in StringDictionaryLookupStub::GenerateNegativeLookup.
This fixes a lot of test failures triggered by r9834, for example mjsunit/const-redecl.js.

BUG=
TEST=

Review URL: http://codereview.chromium.org/8417050
Patch from Gergely Kis <gergely@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9843 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-31 12:34:13 +00:00
fschneider@chromium.org
a2240fc52b Eliminate some virtual function from AST classes.
1. Remove unused dead functions.

2. Replace the virtual As-* type cast functions with non-virtual version
that uses node_type().

Result is around 13K reduction in binary size.
Review URL: http://codereview.chromium.org/8335006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9841 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-31 11:11:26 +00:00
lrn@chromium.org
30465596e6 Make eval consider anything on the form eval(args...) a potential direct cal
Previously we omitted all cases where the global eval property was shadowed,
even if by a variable holding the same value. ES5 requires us to treat these
as direct calls.

We still throw if calling indirect eval with a detached global object.

BUG=v8:994
TEST=mjsunit/eval.js

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9838 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-31 09:38:52 +00:00
ulan@chromium.org
fa8a71df9a Handlify CompileConstructStub. Based on 8391045.
R=kmillikin@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9837 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-28 14:08:43 +00:00
vegorov@chromium.org
c933e28935 Make C++ to JS transition faster by avoiding JavaScriptFrameIterator in SaveContext.
R=kmillikin@chromium.org
BUG=v8:1730

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9835 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-28 12:49:09 +00:00
kmillikin@chromium.org
0df252b38b Handlify the remaining CallStubCompiler functions.
Also, handlify functions for loading with interceptors and callbacks.
Remove some unneeded code.  Rename Foreign::address() because it
confusingly shadows HeapObject::address() which does something quite
different.

R=vegorov@chromium.org,ulan@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9834 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-28 12:37:29 +00:00
danno@chromium.org
6d7d6d4e4e Force transition to FAST_ELEMENTS on out-of-bounds KeyedLoads.
Proactively ensure that that objects don't get FAST_DOUBLE_ELEMENTS to reduce the number of double boxing operations when generated code calls the runtime frequently to satisfy KeyedLoad requests.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9833 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-28 10:35:38 +00:00
keuchel@chromium.org
a9a97d010e Remove kInvalidStrictFlag and make gcc-4.5 happy again.
Review URL: http://codereview.chromium.org/8403036

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9832 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-28 09:10:29 +00:00
kmillikin@chromium.org
9fd8930a70 Fix presubmit error.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9830 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-28 08:51:08 +00:00
mstarzinger@chromium.org
cd9bc6c3a6 Fix error handling in Date.prototype.toISOString.
This fixes Date.prototyoe.toISOString to throw a RangeError exception
for invalid time values. It also includes a fix to removes the arbitrary
(and completely bogus) range limit on the date value during construction
of a Date object. Note that we still have bogus range limits on the year
and month values.

R=lrn@chromium.org
BUG=v8:1792
TEST=mjsunit/date,test262/15.9.5.43-0-*

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9829 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-28 08:45:04 +00:00
kmillikin@chromium.org
f077a41b12 MIPS: crankshaft implementation
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9828 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-28 08:14:46 +00:00
yangguo@chromium.org
b5b3345799 MIPS: Fixing performance regression in issue 1787.
Port r9812 (c1644a9d)

Note: MIPS already had the fix for this regression.
This commit only adds the extra assertions.

BUG=
TEST=

Review URL: http://codereview.chromium.org/8343030
Patch from Gergely Kis <gergely@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9827 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-28 08:03:13 +00:00
erik.corry@gmail.com
31834e0f9d Prepare push to trunk. Now working on 3.7.4.
Review URL: http://codereview.chromium.org/8417020

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9824 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-28 07:38:27 +00:00
fschneider@chromium.org
8b1494b819 Temporarily disable target recording CallFunctionStub until issue 1789 is fixed.
Review URL: http://codereview.chromium.org/8340029

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9823 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-27 15:46:25 +00:00
yangguo@chromium.org
8624fb85d2 Tiny improvements on fast element conversion loops in ia32 and x64.
Review URL: http://codereview.chromium.org/8403035

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9820 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-27 14:19:22 +00:00
erik.corry@gmail.com
1dd598387e Prepare push to trunk. Now working on 3.7.3
Review URL: http://codereview.chromium.org/8407001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9819 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-27 14:03:32 +00:00
keuchel@chromium.org
6e767e3f2d Use StrictModeFlag in preparser and preparse data.
Review URL: http://codereview.chromium.org/8396040

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9818 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-27 13:08:51 +00:00
fschneider@chromium.org
a5b40e27b8 Revert r9805.
It did not fix the original problem, but instead introduced new ones.

R=vegorov@chromium.org
Review URL: http://codereview.chromium.org/8404037

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9817 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-27 12:12:53 +00:00
yangguo@chromium.org
b56466f4da Fixing dead code in empty array init.
TEST=set JSArray::kPreallocatedArrayElements to larger than 4.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9816 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-27 11:11:59 +00:00
kmillikin@chromium.org
9cc75769bc MIPS: Handlify CompileLoad and CompileStore
Port the following 3 stub-cache commits:
r9788   (67147b7)  Handlify CompileLoadGlobal, CompileLoadElement, CompileLoadPolymorphic.
r9791   (b19c694)  Handlify simple functions of [keyed] store stub compiler.
r9803   (e0c3c89)  Handlify CompileStoreCallback, CompileStoreInterceptor.

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9815 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-27 09:21:15 +00:00
yangguo@chromium.org
2923136f95 Fixing performance regression in issue 1787.
BUG=v8:1787

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9812 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-27 07:59:12 +00:00
erik.corry@gmail.com
678200bc11 Prepare push to trunk. Now working on 3.7.2
Review URL: http://codereview.chromium.org/8390049

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9807 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-27 05:27:38 +00:00
yangguo@chromium.org
fdb13b2e56 MIPS: port Implement for-in loop for proxies.
Port r9760 (a1c4dc80)

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9806 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-26 15:02:00 +00:00
fschneider@chromium.org
4ded3ccf7c Fix bug in lazy deoptimization after HInvokeFunction.
The full code generator expects the function expression on top
of the stack until after the all. We have to emit the call + the
corresponding simulate before dropping it in the hydrogen code.

BUG=v8:1789
Review URL: http://codereview.chromium.org/8391042

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9805 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-26 14:05:18 +00:00
lrn@chromium.org
a9edfefa58 Remove special-casing of calls to RegExp test and exec methods with no argument.
Matches new JSC behavior. Fix issue 75740.

BUG=75740
TEST=mjsunit/regexp-static

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9804 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-26 12:51:07 +00:00
ulan@chromium.org
405d57fe00 Handlify CompileStoreCallback, CompileStoreInterceptor.
R=kmillikin@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9803 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-26 12:35:12 +00:00
yangguo@chromium.org
b195db5174 MIPS: port Refactor and clean up array allocation across platforms.
Port r9747 (dc33375)

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9802 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-26 12:35:10 +00:00
mstarzinger@chromium.org
d0ce626477 Fix identity hash code function to respect flag.
The flag passed to JSObject::GetIdentityHash() was not respected so far
and an indentity hash code was generated even when the flag requested
not to do so. This could lead to a rare corner cases (for which a test
case was added) where a GC request would have been dropped.

R=rossberg@chromium.org
TEST=cctest/test-dictionary

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9801 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-26 12:23:40 +00:00
yangguo@chromium.org
70b9d56e06 Fixing issue 1788.
BUG=v8:1788

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9792 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-26 11:34:11 +00:00
ulan@chromium.org
beb0bbe3a9 Handlify simple functions of [keyed] store stub compiler.
Handlified functions: CompileStoreField, CompileStoreGlobal, CompileStoreElement, CompileStorePolymorphic.

Based on 8375053.

R=kmillikin@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9791 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-26 10:45:24 +00:00
mstarzinger@chromium.org
5a33ffd7e8 Fix Error.prototype.toString to be ES5 conform.
R=lrn@chromium.org
TEST=test262/15.11.4.4-8-1,mjsunit/error-tostring

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9790 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-26 10:41:52 +00:00
fschneider@chromium.org
2d4bb1803d Fix bug in inlining call-as-function when inlining multiple levels deep.
This change fixes a off-by-one level error when dropping the
function from the environment. The function of the outermost
environment was not dropped.

BUG=v8:1785
TEST=test/mjsunit/compiler/regress-inline-callfunctionstub.js
Review URL: http://codereview.chromium.org/8341019

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9789 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-26 10:31:06 +00:00
ulan@chromium.org
a2fff744e0 Handlify CompileLoadGlobal, CompileLoadElement, CompileLoadPolymorphic.
R=kmillikin@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9788 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-26 09:58:32 +00:00
rossberg@chromium.org
f7d56eb602 Handle proxies in KeyedStoreIC::Store, instead of just ignoring them.
R=mstarzinger@chromium.org
BUG=v8:1543
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9787 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-26 09:31:40 +00:00
lrn@chromium.org
0a896072d2 MIPS: port Moved random generator state to global context.
Port r9753 (28cd67f8)

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9786 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-26 09:30:04 +00:00
ulan@chromium.org
d46c0d899f MIPS: port Handlify simple functions of [keyed] load stub compiler.
Port r9773 (4cf7a453)

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9785 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-26 09:21:36 +00:00
keuchel@chromium.org
55b7bfa2da MIPS: port Replace boolean indications of strict mode by an enum value.
Port r9746 (804e4e4)

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9784 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-26 08:43:33 +00:00
keuchel@chromium.org
5946475d6d MIPS: port Block scoped const variables.
Port r9764 (9b9689d5)

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9783 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-26 08:42:15 +00:00
kmillikin@chromium.org
77c4571aca MIPS: port Handlify CallStubCompiler::CompileCallField.
Port r9769 (db287698)

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9782 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-26 08:32:37 +00:00
fschneider@chromium.org
d022406db2 Land two MIPS changes.
Issue 8368021: MIPS: port Fix compilation on ARM and x64 broken by r9738
 Issue 8378001: MIPS: port Avoid static initializers in assember-arm.h.
Review URL: http://codereview.chromium.org/8341048

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9781 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-26 08:17:24 +00:00
lrn@chromium.org
93f5bfdb98 Make the irregexp interpreter throw on stack overflow.
BUG=v8:904

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9780 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-26 06:37:57 +00:00
vegorov@chromium.org
f8c2d3847f Take loop side-effects into account when collecting side-effects on the path between two blocks.
R=fschneider@chromium.org
BUG=100409
TEST=test/mjsunit/regress/regress-100409.js

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9778 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-25 15:39:55 +00:00
mstarzinger@chromium.org
622d35dc0e Implement Harmony sets and maps.
This implementation extends the internal ObjectHashTable to be able to
hold arbitrary objects (e.g. Smis, Strings, ...) as keys by applying
specialized hashing functions to primitive types. Equality of keys is
defined using the internal SameValue function.

R=rossberg@chromium.org
BUG=v8:1622
TEST=mjsunit/harmony/collections

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9777 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-25 14:14:56 +00:00
ricow@chromium.org
0442e08095 Print out line number and extension name when compilation of an extension fails. This fixes issue 305.
Review URL: http://codereview.chromium.org/8332029

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9776 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-25 13:43:19 +00:00
erikcorry
6950fab332 Remove superfluous assert.
Review URL: http://codereview.chromium.org/8332028

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9775 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-25 13:34:52 +00:00