Commit Graph

491 Commits

Author SHA1 Message Date
yangguo@chromium.org
3c074eb120 Fix lint check.
R=mstarzinger@chromium.org
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/10447008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11640 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-24 08:09:21 +00:00
yangguo@chromium.org
ef7524bd29 MIPS: Implement loop for global regexps in regexp assembler.
Port r11623 (f153116d)

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/10436012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11639 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-24 07:29:49 +00:00
danno@chromium.org
9910edbb9a Implement tracking and optimizations of packed arrays
R=jkummerow@chromium.org
TEST=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/10170030

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11636 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-23 14:24:29 +00:00
erik.corry@gmail.com
3d45e98b5e Remove %_SwapElements. This inlined runtime contained an optimization that was dangerous in the presence of incremental compaction. It also prevented QuickSort from array.js from being optimized by Crankshaft, so it is probably better to do without it. We have high hopes that this will fix bug=117879.
Review URL: https://chromiumcodereview.appspot.com/10392150

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11588 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-17 20:53:32 +00:00
erik.corry@gmail.com
83fbd2b52d MIPS: Fix simplification of DoLoadNamedFieldPolymorphic. This is a commit of https://chromiumcodereview.appspot.com/10391096/ for Akos Palfi
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11572 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-16 09:07:57 +00:00
erik.corry@gmail.com
423451aed7 Simplify DoLoadNamedFieldPolymorphic
Review URL: https://chromiumcodereview.appspot.com/10386089

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11543 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-11 09:13:02 +00:00
erik.corry@gmail.com
f8bdbf1ce1 Fix compose-discard crasher from 11524 - port to x64, ARM, MIPS.
This is now bug 2123.
TBR=mstarzinger
Review URL: https://chromiumcodereview.appspot.com/10391061

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11540 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-10 21:25:49 +00:00
yangguo@chromium.org
2cb65b13be MIPS: Fixed illegal instruction use on Loongson in code for Math.random().
BUG=v8:2115
TEST=mjsunit/string-case,mjsunit/regress/regress-110509,mjsunit/math-floor

Review URL: https://chromiumcodereview.appspot.com/10383044
Patch from Akos Palfi <palfia@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11523 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-07 17:31:14 +00:00
jkummerow@chromium.org
63263a9aa9 Fix unsigned-Smi check in MappedArgumentsLookup
BUG=126414
TEST=mjsunit/regress/regress-crbug-126414

Review URL: https://chromiumcodereview.appspot.com/10375033

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11518 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-07 10:05:39 +00:00
danno@chromium.org
9f75aa3d7b MIPS: ARM: Ensure reload of elements pointer in StoreFastDoubleElement stub
Port r11483 (c291e80e)

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/10348016
Patch from Akos Palfi <palfia@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11507 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-04 09:07:22 +00:00
mstarzinger@chromium.org
a5a5f26ebb MIPS: Fix register clobbering in LoadIC for interceptors.
Port r11492 (d14ada19)

Original commit message:
Fix register clobbering in LoadIC for interceptors.

This fixes a corner-case where the receiver register was clobbered by
LoadICs for interceptors and inlined followup code still relied on the
receiver to be intact in case of prototype changes.

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/10315016
Patch from Akos Palfi <palfia@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11506 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-04 08:34:59 +00:00
mstarzinger@chromium.org
6531771c71 MIPS: Implement clearing of CompareICs.
Port r11491 (705d40cc)

Original commit message:
Implement clearing of CompareICs.

This allows CompareICs to be cleared during garbage collection to avoid
cross-context garbage retention through maps stored in CompareIC stubs
for the KNOWN_OBJECTS state.

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/10342024
Patch from Akos Palfi <palfia@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11505 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-04 07:53:11 +00:00
peter.rybin@gmail.com
1719a1499a Fix issue 825 (LiveEdit vs. function with no locals) in core and for ia32.
Review URL: https://chromiumcodereview.appspot.com/10263002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11502 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-03 17:31:34 +00:00
danno@chromium.org
e443c69b8d MIPS: Reduce size of LIR instruction by one word and remove dead code.
Port r11454 (72c662fc)

Original commit message:
Reduce size of LIR instruction by one word and remove dead code.

Until now we always recorded two deoptimization environments for instructions
that are marked as calls. We actually don't need two for all LIR
instructions except one (LInstanceOfKnownGlobal) where there is a lazy
deoptimization point in deferred code.

This change remove on of them and uses one virtual function instead
to make LInstanceOfKnownGlobal work as before.

Additionally, this change removes an unused predicate save_doubles_ from LIR
instructions and removes some helper functions that are used only in one place.

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/10233019
Patch from Akos Palfi <palfia@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11501 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-03 15:13:04 +00:00
mstarzinger@chromium.org
2c64592065 MIPS: Fix LFastLiteral to check boilerplate elements kind.
Port r11470 (621f96c0)

Original commit message:
Fix LFastLiteral to check boilerplate elements kind.

Adds a missing check that the elements kind of the boilerplate object
still has the expected elements kind, unoptimized code can transition
the boilerplate. Corner cases might cause the optimized code to be
reentered again.

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/10271018
Patch from Akos Palfi <palfia@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11474 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-02 07:51:03 +00:00
yangguo@chromium.org
03e8d039ca MIPS: Removed unused variables.
These were found by compilation errors with gcc 4.6.

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/10253004
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11459 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-27 12:57:01 +00:00
fschneider@chromium.org
f46906d7a8 Reduce size of LIR instruction by one word and remove dead code.
Until now we always recorded two deoptimization environments for instructions
that are marked as calls. We actually don't need two for all LIR
instructions except one (LInstanceOfKnownGlobal) where there is a lazy
deoptimization point in deferred code.

This change remove on of them and uses one virtual function instead
to make LInstanceOfKnownGlobal work as before.

Additionally, this change removes an unused predicate save_doubles_ from LIR
instructions and removes some helper functions that are used only in one place.
Review URL: https://chromiumcodereview.appspot.com/10035021

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11454 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-26 12:43:00 +00:00
mstarzinger@chromium.org
21fc0fef6a Fix deopted construct stub frame to contain code object.
R=danno@chromium.org
BUG=chromium:124594
TEST=mjsunit/regress/regress-124594

Review URL: https://chromiumcodereview.appspot.com/10155024

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11436 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-25 13:22:04 +00:00
fschneider@chromium.org
6e713a269d Optimise Math.floor(x/y) to use integer division for specific divisor.
Landing for Rodolph Perfetta <rodolph.perfetta@gmail.com>. 

Original CL: http://codereview.chromium.org/9638018/
Review URL: https://chromiumcodereview.appspot.com/10197010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11427 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-24 15:59:07 +00:00
fschneider@chromium.org
09657d94eb Revert r11420 because Win32 compilation was broken.
TBR=danno@chromium.org
Review URL: https://chromiumcodereview.appspot.com/10190007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11421 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-23 18:12:36 +00:00
fschneider@chromium.org
2957c20926 optimise Math.floor(x/y) to use integer divisiion for specific divisor.
BUG=none
TEST=mjsunit/math-floor-of-div.js

Landing for Rodolph Perfetta <rodolph.perfetta@gmail.com>.
Review URL: https://chromiumcodereview.appspot.com/9638018

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11420 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-23 17:44:21 +00:00
erikcorry
9fda0c19c3 MIPS: Do the qNaN fixup at de-serialization time. This is a commit of https://chromiumcodereview.appspot.com/10093007/ for Paul Lind
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11405 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-20 14:12:49 +00:00
mstarzinger@chromium.org
29f0463536 MIPS: Port function call type-feedback cells to x64 and ARM.
Port r11391 (789b1078)

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/10124013
Patch from Akos Palfi <palfia@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11401 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-20 12:51:08 +00:00
fschneider@chromium.org
cadf058618 Finish refactoring done for ia32 for the other platforms.
Make non-templatized versions of LIR printing functions.

This avoid duplicating the code for each template instance.

BUG=v8:1803
Review URL: https://chromiumcodereview.appspot.com/10123011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11394 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-19 16:49:09 +00:00
fschneider@chromium.org
0556f87851 Optimize ~~(expr) in optimized code.
~~ is commonly used to truncate a value to int32 (ToInt32).

This change avoid actually emitting the bitwise operations, and
just truncates the subexpression of ~~.

BUG=v8:2037
TEST=test/mjsunit/compiler/optimize-bitnot.js
Review URL: https://chromiumcodereview.appspot.com/10123007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11390 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-19 13:24:15 +00:00
rossberg@chromium.org
977b602727 MIPS: Implement rudimentary module linking.
Port r11336 (6dd4e844)

Original commit message:

Implement rudimentary module linking.

Constructs the (generally cyclic) graph of module instance objects
and populates their exports. Any exports other than nested modules
are currently set to 'undefined' (but already present as properties).

Details:
- Added new type JSModule for instance objects: a JSObject carrying a context.
- Statically allocate instance objects for all module literals (in parser 8-}).
- Extend interfaces to record and unify concrete instance objects,
and to support iteration over members.
- Introduce new runtime function for pushing module contexts.
- Generate code for allocating, initializing, and setting module contexts,
and for populating instance objects from module literals.
Currently, all non-module exports are still initialized with 'undefined'.
- Module aliases are resolved statically, so no special code is required.
- Make sure that code containing module constructs is never optimized
(macrofy AST node construction flag setting while we're at it).
- Add test case checking linkage.

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/10035028

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11374 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-18 15:48:01 +00:00
rossberg@chromium.org
1aa16d8689 MIPS: Refactor code generation for global declarations.
Port r11332 (0e6df8b6)

Original commit message:
Refactor code generation for global declarations.

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/10041029

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11373 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-18 15:46:08 +00:00
rossberg@chromium.org
42b77f3156 MIPS: Refactoring of code generation for declarations, in preparation for modules.
Port r11331 (bd7843a0)

Original commit message:
Refactoring of code generation for declarations, in preparation for modules.

Do proper dispatch on declaration type instead of mingling together
different code generation paths. Once we add more declaration forms,
this is more scalable.

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/10119017

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11372 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-18 15:43:29 +00:00
yangguo@chromium.org
7f30cf119d MIPS: Make SubStringStub more robust with unsafe arguments.
Port r11349 (5b381a).

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/10107025
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11367 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-18 11:17:04 +00:00
vegorov@chromium.org
bf2bc0b1db MIPS: Skip canonicalization check in LStoreKeyedFastDoubleElement when it is not needed
Port r11278 (e5dc7ebd).

Original commit message:

Skip canonicalization check in LStoreKeyedFastDoubleElement when it is not needed:

- if value is a result of integer32 to double conversion (can't be NaN);

- if value was loaded from fast double backing store (already canonicalized).

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/10071004
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11366 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-18 10:42:30 +00:00
vegorov@chromium.org
b635c90792 MIPS: fix-up after r11344
Removed a constant now duplicated by r11344 (7c41cf72).
This fixes compilation on MIPS (with the other submitted patches applied).

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/10108023
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11365 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-18 10:39:30 +00:00
vegorov@chromium.org
fd9bd722bc Simplify invocation sequence at monomorphic function invocation sites.
Provide known target as a hint to HInvokeFunction instruction so that it can statically determine if arguments adaptation is required.

R=fschneider@chromium.org
BUG=v8:2079

Review URL: https://chromiumcodereview.appspot.com/10116021

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11364 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-18 09:38:45 +00:00
mstarzinger@chromium.org
47d07b8a7b Fix fast array literals to ignore prototype chain.
This makes sure that boilerplate objects for array literals with
non-constant elements (which will contain the hole at non-constant
positions) will not cause prototype chain lookups when generating
optimized code.

R=erik.corry@gmail.com
BUG=chromium:123512
TEST=mjsunit/regress/regress-123512

Review URL: https://chromiumcodereview.appspot.com/10105025

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11350 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-17 11:12:37 +00:00
mstarzinger@chromium.org
f07b21337b MIPS: Add isolate accessor to AccessorInfo and Arguments.
Port r11306 (36b58f7).

Original commit message:

This passes the isolate through to API callback functions so that it is
available through AccessorInfo and Arguments. This allows bindings to
avoid unnecessary TLS lookups to retrieve the current isolate.

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/10083001
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11319 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-13 13:43:19 +00:00
fschneider@chromium.org
037785baaa MIPS: Improve performance of keyed loads/stores which have a HeapNumber index.
Port r11282 (bd2ab07).

Patch by Daniel Kalmar.

Original commit message:

Some GWT compiled code results in array access that has a heap number (e.g. -0)
as an index. Until now this would result in a generic IC.

For example:

a[-0] === a[0] or

a[0.25 * 4] === a[1]

This change detects heap numbers that are representable as a smi
and converts them. As a result we can still use the fast keyed monomorphic
ICs. Optimized code already handles keyed access with a double-key efficiently.

As a result the frame rate on the reported benchmark improves by roughly 2x.

BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10068012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11318 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-13 13:04:51 +00:00
erik.corry@gmail.com
5d164e4c7c MIPS: Implement CheckNotCharacterAfterMinusAnd. This is a commit of http://codereview.chromium.org/9721011/ for Daniel Kalmar
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11314 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-13 11:47:31 +00:00
jkummerow@chromium.org
14e181709b Fix regular and ElementsKind transitions interfering with each other
R=danno@chromium.org
BUG=122271
TEST=mjsunit/regress/regress-crbug-122271

Review URL: https://chromiumcodereview.appspot.com/10038010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11286 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-12 12:30:32 +00:00
erik.corry@gmail.com
e9e291c331 MIPS: NaNs in the snapshot should be quiet according
to the MIPS FPU even when cross-building the snapshot.
This is based on code from Daniel Kalmar from
http://codereview.chromium.org/9910029/
Review URL: https://chromiumcodereview.appspot.com/10068006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11283 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-12 09:23:26 +00:00
erik.corry@gmail.com
de169b7d43 Port regexp microoptimizations to MIPS. Also fix some formatting. This includes http://codereview.chromium.org/9965107/ from Daniel Kalmar
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11281 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-12 07:45:25 +00:00
vegorov@chromium.org
983d521fe9 Reland arguments access support for inlined functions (r11109,r11118).
When pushing arguments use correct initial values instead of fetching them from the environment which can be modified.

R=fschneider@chromium.org
TEST=test/mjsunit/compiler/inline-arguments.js

Review URL: https://chromiumcodereview.appspot.com/10033028

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11274 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-11 13:40:55 +00:00
mstarzinger@chromium.org
78226352b7 Ensure HAllocateObject always allocates in new-space.
This is needed so that we can start removing write-barriers in optimized
code if we can prove that the receiver object is always in new-space.

TEST=cctest/test-heap/OptimizedAllocationAlwaysInNewSpace

Review URL: https://chromiumcodereview.appspot.com/10008007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11243 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-05 15:36:31 +00:00
danno@chromium.org
a897e6e229 MIPS: Remove static initializers in v8.
Port r11010 (1daa81bc).

MIPS-specific changes:
-register codes and registers are defined using a macro to avoid redundancy
-renamed s8_fp to fp, removed the "fp" alias
-removed kSavedValueRegister (found by check-static-initializers.sh)

Original commit message:

Landing for pliard@chromium.org: Remove static initializers in v8.

This change includes two CLs by pliard@chromium.org:

1. http://codereview.chromium.org/9447052/ (Add CallOnce() and simple LazyInstance implementation):

Note that this implementation of LazyInstance does not handle global destructors (i.e. the lazy instances a

This CL was initially reviewed on codereview.appspot.com:
http://codereview.appspot.com/5687064/

2.  http://codereview.chromium.org/9455088/ (Remove static initializers in v8):
This CL depends on CL 9447052 (adding CallOnce and LazyInstance).
It is based on a patch sent by Digit.

With this patch applied, we have only one static initializer left (in atomicops_internals_x86_gcc.cc). This

This CL also modifies the presubmit script to check the number of static initializers.

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9689069
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11241 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-05 15:18:22 +00:00
erik.corry@gmail.com
6c8a6c2640 Cosmetic (ARM/MIPS): Use FieldMemOperand where appropriate.
Review URL: https://chromiumcodereview.appspot.com/9963051

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11207 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-02 13:26:05 +00:00
erik.corry@gmail.com
b5bf01ec79 MIPS: RegExp: Add support for table-based character class code generation. This is a commit of http://codereview.chromium.org/9968032/ for Daniel Kalmar
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11206 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-02 11:27:37 +00:00
vegorov@chromium.org
8360ec877e Ensure that arguments object is materialized when deoptimizing from inlined function.
Lithium translation rebuilds hydrogen environments from scratch so we have to ensure that arguments object is correctly bound on function entry otherwise deoptimization will not materialize it.

This fix was implemented as part of r11109 and then reverted.

R=danno@chromium.org
BUG=v8:2045
TEST=test/mjsunit/regress/regress-2045.js

Review URL: https://chromiumcodereview.appspot.com/9963008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11194 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-30 13:22:39 +00:00
erik.corry@gmail.com
356cf1ed0a RegExp: Add support for table-based character class
code generation.  This is performance neutral for
all our tests, but a factor 6 faster for the Unicode
based regexp in the new test (and much more compact
code).
Review URL: https://chromiumcodereview.appspot.com/9854020

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11189 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-30 07:43:48 +00:00
svenpanne@chromium.org
fa91d25e67 MIPS: First implementation of fast path for instantiation of array literals composed of doubles.
Port r11114 (d8c975164).

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9834044

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11176 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-28 12:44:04 +00:00
jkummerow@chromium.org
d71c60e086 Port count-based profiler to x64
Review URL: https://chromiumcodereview.appspot.com/9845019

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11159 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-27 11:21:27 +00:00
jkummerow@chromium.org
d9936b4546 MIPS: Port count-based profiler
Port r11120 (548ba49bd).

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9835083
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11141 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-26 11:29:44 +00:00
mstarzinger@chromium.org
5bca664574 MIPS: Improve polymorphic loads on single slots.
Port r11132 (91bdad6108).

Original commit message:

If all property lookups for a polymorphic load actually result in the
same field index under all maps, we can actually emit a monomorphic load
that is guarded by a map check that verifies that the actual map is in
the set of handled maps. This also allows GVN to get rid of redundant
such map checks.

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9852007
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11135 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-26 09:41:53 +00:00
mstarzinger@chromium.org
ab4e4cd917 Improve polymorphic loads on single slots.
If all property lookups for a polymorphic load actually result in the
same field index under all maps, we can actually emit a monomorphic load
that is guarded by a map check that verifies that the actual map is in
the set of handled maps. This also allows GVN to get rid of redundant
such map checks.

R=danno@chromium.org

Review URL: https://chromiumcodereview.appspot.com/9616014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11132 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-23 16:37:54 +00:00
vegorov@chromium.org
3ccc885c78 Revert arguments access support for inlined functions (r11109,r11118).
We are inserting HPushArgument instructions after HEnterInlined based on the environment at the point of the first arguments access. Which might create use before def if there are redundant phis in the environment. 
Review URL: https://chromiumcodereview.appspot.com/9837041

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11128 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-23 15:39:34 +00:00
vegorov@chromium.org
9da07882c8 MIPS: Support arguments object access from inlined functions.
Port r11109 (a7770bdd7c).

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9808058
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11118 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-23 11:38:40 +00:00
erik.corry@gmail.com
bc1eb293cd Enable snapshots on MIPS. This is based on
http://codereview.chromium.org/9372063 by Daniel Kalmar.
Review URL: https://chromiumcodereview.appspot.com/9722020

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11107 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-21 14:29:14 +00:00
danno@chromium.org
b49dd13c90 MIPS: Branch delay slot and other optimizations.
List of changes:
-added a minor optimization to the Simulator that quickly skips nops in the delay slot
-slightly re-worked CEntryStub to save a few instructions
 CEntryStub now expects the following values:
  -s0: number of arguments including receiver
  -s1: size of arguments excluding receiver
  -s2: pointer to builtin function
 Two new MacroAssembler functions were added to make usage more convenient:
  -PrepareCEntryArgs(int num_args) to set up s0 and s1
  -PrepareCEntryFunction(const ExternalReference&) to set up s2
-removed branch delay slot nops from the most frequently used code areas
-reorganized some code to execute fewer instructions
-utilized the delay slot of most Ret instructions
 This does not cover all Rets, only the most obvious cases.
 Also added a special version of DropAndRet that utilizes the delay slot.
-added some comments to code areas where explanation of the register/delay slot usage may be needed
-added an optimization to Jump so it doesn't always pre-load the target register

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9699071
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11099 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-21 08:41:16 +00:00
fschneider@chromium.org
b0bb4f078a Fix assertion failure due to too many deoptimization ids.
The failing mozilla test was caused by more deoptimizations
introduced by --always-opt and r11087.

We abort code generation in release mode, so we should do
the same in debug mode.
Review URL: https://chromiumcodereview.appspot.com/9752004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11091 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-20 08:49:23 +00:00
danno@chromium.org
2dc04fda4a MIPS: Properly initialize element-transitioning array literals on ARM.
Port r10624 (172d021).

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9689010
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11074 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-16 16:18:20 +00:00
vegorov@chromium.org
c9b0d104d1 MIPS: Inline functions that use arguments object in f.apply(o, arguments) pattern.
Port r11008 (f7a04e6f9).

Original commit message:

Support arguments materialization after deoptimization in all frames (not only in topmost one).

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9677053
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11056 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-15 12:29:20 +00:00
svenpanne@chromium.org
e2cb7894fb Fixed breakage caused by r11051 on non-ia32 platforms.
TBR=mstarzinger@chromium.org

Review URL: https://chromiumcodereview.appspot.com/9703056

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11052 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-15 09:28:49 +00:00
svenpanne@chromium.org
c644c4e811 Ensure that generated code for object literals will call Runtime_DefineOrRedefineAccessorProperty only once per accessor property.
To do this, we collect all accessor properties in a first pass and emit code for
defining those properties afterwards in a second pass.

As a finger exercise, the table used for collecting accessors has a (subset of
an) STL-like iterator interface, including STL-like names and operators.
Although C++ is quite verbose here (as usual, but partly this is caused by our
current slightly clumsy classes/templates), things work out quite nicely and it
cleans up some confusion, e.g. a table entry is not an iterator etc.
Everything compiles into very efficient code, e.g. the loop condition 'it !=
accessor_table.end()' compiles into a single 'testl' instruction on ia32.
+1 for using standard APIs!

Review URL: https://chromiumcodereview.appspot.com/9691040

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11051 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-15 07:13:46 +00:00
yangguo@chromium.org
754dc79066 MIPS: Added support for Loongson architectures.
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9692048
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11032 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-13 16:18:30 +00:00
kmillikin@chromium.org
7d6fd56fd5 Ensure there is a smi check of the receiver for global load and call ICs.
There was a comment that, for such ICs specialized to the global object,
they were always contextual loads.  This is very brittle.  It is a
micro-optimization that relies too much on the way that things happen to
work today.

Instead, never omit the smi check because it's safer.

R=vegorov@chromium.org
BUG=117794
TEST=regress-117794.js

Review URL: https://chromiumcodereview.appspot.com/9691038

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11022 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-13 11:39:30 +00:00
yangguo@chromium.org
7659beafb1 Ensure consistency of Math.sqrt on Intel platforms.
BUG=
TEST=regress-sqrt.js

Review URL: https://chromiumcodereview.appspot.com/9690010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11012 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-12 14:56:04 +00:00
ulan@chromium.org
85611e37c0 MIPS: Port Date-related changes.
Port r10981 (5ea074), r10982 (5f0d413) and r10983 (663a897d5).

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9668045
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11003 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-12 08:46:25 +00:00
yangguo@chromium.org
165e42c291 MIPS: Inline inequality compares of strings into CompareICStub
Port r10988 (c6c9ebb5).

Original commit message:

Inline inequality compares of strings into CompareICStub instead of jumping into the CompareStub that handles the generic case.

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9669026
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11002 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-12 08:24:10 +00:00
vegorov@chromium.org
95884b7c6b MIPS: Introduce basic type feedback for for-in statements to avoid deopts.
Port r10901 (a54f1a3).

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9586004
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10985 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-09 12:30:04 +00:00
yangguo@chromium.org
3ae794c498 Tweaks to SubStringStub
Review URL: https://chromiumcodereview.appspot.com/9625003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10957 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-07 14:19:28 +00:00
svenpanne@chromium.org
1729e3c0dd Make the runtime entry for setting/changing accessors "atomic".
Previously, there were 1 or 2 calls to the runtime when accessors were changed
or set. This doesn't really work well with property attributes, leading to some
hacks and complicates things even further when trying to share maps in presence
of accessors. Therefore, the runtime entry now takes the full triple (getter,
setter, attributes), where the getter and/or the setter can be null in case they
shouldn't be changed.

For now, we do basically the same on the native side as we did before on the
JavaScript side, but this will change in future CLs, the current CL is already
large enough.

Note that object literals with a getter and a setter for the same property still
do 2 calls, but this is a little bit more tricky to fix and will be handled in a
separate CL.

Review URL: https://chromiumcodereview.appspot.com/9616016

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10956 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-07 13:24:44 +00:00
danno@chromium.org
d0437e781d MIPS: Simplify the deopt entry method.
The t9 register will always hold the address of the current entry when deoptimizing,
so it can be used as the basis of calculation.

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9546017
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10950 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-07 09:05:41 +00:00
danno@chromium.org
107d25a8a7 MIPS: Minor optimizations in Builtins::Generate_ArgumentsAdaptorTrampoline.
The branch delay slot is now utilized in a few loops.
This is the cleanup of an old TODO.

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9618013

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10949 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-07 08:59:43 +00:00
yangguo@chromium.org
fc60fdab9c MIPS: Port r10939 to x64 and arm (inline Math.random in crankshaft).
Port r10947 (d85b4e).

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9615016
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10948 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-06 17:39:12 +00:00
danno@chromium.org
20a29c9a0f MIPS: Inline ordered relational compares of mixed double/undefined values.
Port r10905 (2a997cf).

Original commit message:

Allow Crankshaft to inline ordered relational comparisons (<, >, <=, >=) that have undefined arguments in addition to double value arguments (rather than calling the generic Compare stub).

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9583038
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10925 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-05 15:40:25 +00:00
yangguo@chromium.org
5ce562cda8 Reland r10908 (Ensure consistent result of transcendental function0.)
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9583037

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10915 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-05 08:17:16 +00:00
yangguo@chromium.org
f2699b66cf Revert r10908 due to flakiness and crashes.
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9580007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10909 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-02 15:00:52 +00:00
yangguo@chromium.org
12f2099993 Ensure consistent result of transcendental functions.
BUG=
TEST=regress-transcendental.js

Review URL: https://chromiumcodereview.appspot.com/9572009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10908 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-02 14:33:15 +00:00
fschneider@chromium.org
751d53d9d2 Make trace-hydrogen output more visualizer-friendly.
Review URL: https://chromiumcodereview.appspot.com/9580005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10904 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-02 13:05:59 +00:00
mstarzinger@chromium.org
774e3f4575 MIPS: Properly check fast array property in StoreIC::GenerateArrayLength.
This is the cleanup of an old todo from r10254 (93483b6eb).

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9570010
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10896 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-01 17:20:11 +00:00
fschneider@chromium.org
570a499bce MIPS: Additional explicit zone allocation changes.
These changes were not included in r10863 (226afed4) because of patch submission ordering.

BUG=
TEST=
Patch from Daniel Kalmar <kalmard@homejinni.com>.
Review URL: https://chromiumcodereview.appspot.com/9566003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10892 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-01 12:56:02 +00:00
fschneider@chromium.org
1e40f7ac2c Fix a register assignment bug in typed array stores without SSE3 available.
The old code used a separate HToInt32 instruction which had a wrong register
constraint for the input register which caused wrong result when the stored value
is used after a typed array store. (UseRegister instead of UseTempRegister) when no
SSE3 is available.

This change fixes it by replacing HToInt32 with the corresponding HChange
instruction which has correct register contraints.

TEST=mjsunit/compiler/regress-toint32.js
Review URL: https://chromiumcodereview.appspot.com/9565007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10891 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-01 12:45:46 +00:00
mstarzinger@chromium.org
1009e414b6 MIPS: Implement inlined object allocation in Crankshaft.
Port r10881 (0d25c61e).

Original commit message:

Generates inlined code for object allocation specific to the initial map
of the given constructor function. Also forces completion of inobject
slack tracking while crankshafting to finalize instance size of these
objects.

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9569008
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10890 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-01 12:38:58 +00:00
erik.corry@gmail.com
4aa32dbdb4 MIPS: Fix secondary stub cache and add a test for the stub cache lookups. This is a commit of https://chromiumcodereview.appspot.com/9566004 for Daniel Kalmar
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10885 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-01 12:12:56 +00:00
fschneider@chromium.org
a8980079a0 Add flag --trace-phase to selectively produce IR trace output.
By default --trace-hydrogen only generates the final IR (before
code generation). The other phases can be printed by specifying
them by their first letter. Currently H=HIR, L=LIR or Z=final IR (default)
are recognized.
Review URL: https://chromiumcodereview.appspot.com/9535009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10882 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-01 11:33:37 +00:00
vegorov@chromium.org
b4a0a4ddfe MIPS: Support fast case for-in in Crankshaft.
Port r10794 (654fe910).

Original commit message:

Only JSObject enumerables with enum cache (fast case properties, no interceptors, no enumerable properties on the prototype) are supported.

HLoadKeyedGeneric with keys produced by for-in enumeration are recognized and rewritten into direct property load by index. For this enum-cache was extended to store property indices in a separate array (see handles.cc).

New hydrogen instructions:

- HForInPrepareMap: checks for-in fast case preconditions and returns map that contains enum-cache;
- HForInCacheArray: extracts enum-cache array from the map;
- HCheckMapValue: map check with HValue map instead of immediate;
- HLoadFieldByIndex: load fast property by it's index, positive indexes denote in-object properties, negative - out of object properties;

Changed hydrogen instructions:

- HLoadKeyedFastElement: added hole check suppression for loads from internal FixedArrays that are knows to have no holes inside.

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9453009
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10865 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-29 12:05:58 +00:00
fschneider@chromium.org
abffcbdd3e MIPS: Pass zone explicitly to zone-allocation on x64 and ARM.
Port r10857 (87e52e7).

Original commit message:

This is a very mechanical change to reduce the number of calls to
Isolate::Current that come with every plain new-allocation.

BUG=
TEST=

Patch from Daniel Kalmar <kalmard@homejinni.com>.
Review URL: https://chromiumcodereview.appspot.com/9511003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10863 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-29 09:53:59 +00:00
mstarzinger@chromium.org
66a94223db MIPS: Implement inlining of constructor calls.
Port r10849 (b0fe79c).

Also included: Fixed a bug in GenerateRecordCallTarget.

This bug prevented certain functions from being registered as Monomorphic
and thus prevented them from being inlined using the new system (b0fe79c).

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9511002
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10862 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-29 09:48:03 +00:00
svenpanne@chromium.org
3df99e7eb7 Thread the current isolate through a few places, avoiding Isolate::Current().
This removes approx. 12k calls of Isolate::Current() in string-tagcloud.

Review URL: https://chromiumcodereview.appspot.com/9490004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10856 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-28 10:32:02 +00:00
mstarzinger@chromium.org
fb8eb04bfd Implement inlining of constructor calls.
R=vegorov@chromium.org,kmillikin@chromium.org

Review URL: https://chromiumcodereview.appspot.com/9304001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10849 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-28 09:05:55 +00:00
erik.corry@gmail.com
a81b05af93 Fix the negative lookup stub to handle deleted entries in a
dictionary.  This fixes http://code.google.com/p/v8/issues/detail?id=1964
"Closure-uri benchmark is sensitive to hash seed".
Review URL: https://chromiumcodereview.appspot.com/9463012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10848 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-28 08:32:44 +00:00
jkummerow@chromium.org
d5e252b157 MIPS: Profiler experiments: Fix debugger in the presence of self-optimization headers
Port r10834 (0ce8cc524).

Note: this commit is a simple fix-up for FullCodeGenerator::self_optimization_header_size().

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9466050
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10843 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-27 14:24:08 +00:00
jkummerow@chromium.org
a19c50afb4 Profiler experiments: Fix debugger in the presence of self-optimization headers
Review URL: https://chromiumcodereview.appspot.com/9466012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10834 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-27 07:49:14 +00:00
jkummerow@chromium.org
4e0091bebb Profiler experiments: self-optimization for functions containing calls
Review URL: https://chromiumcodereview.appspot.com/9430042

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10787 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-22 10:48:58 +00:00
svenpanne@chromium.org
76a201df2f Removed Runtime_DefineAccessor.
Runtime_DefineOrRedfineAccessorProperty basically does the same, so we have 1
code path less to worry about.

Review URL: https://chromiumcodereview.appspot.com/9424033

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10779 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-21 12:47:27 +00:00
fschneider@chromium.org
93802f79e5 MIPS: Enable optimization of top-level code and generate deoptimization support lazily.
Port r10700 (c976fbd5).

Original commit message:
This change enables optimization of top-level and eval-code. For this to work, it adds
support for declaring global variables in optimized code.

At the same time it disables the eager generation of deoptimization support data
in the full code generator (originally introduced in
r10040). This speeds up initial compilation and saves
memory for functions that won't be optimized. It requires
recompiling the function with deoptimization
support when we decide to optimize it.

BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/9418006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10773 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-21 08:36:16 +00:00
mstarzinger@chromium.org
1dd2b094a5 Implement fast literal support in Crankshaft.
This extends the current support for nested object literals we already
have in Crankshaft, to also support nested array literals and mixed
nested literals containing arrays and objects. All three types are
generated by the unified HFastLiteral instruction.

All previous upper bounds on nested literal graphs remain unchanged,
keeping the size of generated code in check.

The main intention is to boost performance of two-dimensional array
literals containing constant elements (aka. matrices).

R=danno@chromium.org
TEST=mjsunit/compiler/literals-optimized

Review URL: https://chromiumcodereview.appspot.com/9403018

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10734 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-16 17:32:30 +00:00
vegorov@chromium.org
b6551b83a5 Increase ARM/MIPS simulators stack safety margin to 1024 bytes
Based on r9686 (10e1ea5).

BUG=
TEST=mozilla regress-355497.js

Review URL: https://chromiumcodereview.appspot.com/9309030
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10722 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-16 14:16:12 +00:00
jkummerow@chromium.org
0199492d57 MIPS: Initial support for count-based profiling
Port r10699 (18a0fc0).

Original commit message:

(behind FLAG_count_based_interrupts; only on ia32)

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9420005
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10720 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-16 13:33:37 +00:00
fschneider@chromium.org
596a0fa73c MIPS: Re-worked the deopt entry table.
This method works around the Branch offset and relocinfo issues by emulating a pc-relative jump.
This allows us to generate larger entry tables. The theoretical limit is 2^16 (number of entries)
but even that can be extended by allowing a larger instruction count.

Also reverted the mips-specific constant (kNumberOfEntries) in deoptimizer.h

BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/9347016

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10717 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-16 08:38:25 +00:00
rossberg@chromium.org
f2715fe710 MIPS: Split AST Declaration class, in preparation for new module declaration forms.
Port r10662 (c8054f6).

Original commit message:

Turns Declaration into an abstract class, and introduces VariableDeclaration as a concrete subclass.

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9395015

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10709 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-14 16:07:47 +00:00
danno@chromium.org
b098a2bdf6 MIPS: Implement KeyedStoreICs to grow arrays on out-of-bound stores.
Port r10673 (18d3af5).

Original commit message:
Supports growing non-COW JSArray by a single element if the backing store has room, and initial allocation of a backing store for the store to index zero of an empty array  to kPreallocatedArrayElements elements (e.g. the [] array literal).

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com/9378005
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10707 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-14 15:49:10 +00:00
jkummerow@chromium.org
4233bf8348 Initial support for count-based profiling
(behind FLAG_count_based_interrupts; only on ia32)

Review URL: https://chromiumcodereview.appspot.com/9373028

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10699 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-14 14:00:31 +00:00