Commit Graph

387 Commits

Author SHA1 Message Date
kmillikin@chromium.org
581b7e6eb2 Streamline throwing in the C entry stub.
Remove a gratuitous level of indirection in favor of direct calls to the
macro assembler, and eliminate some duplicated code for the uncatchable
case.

R=fschneider@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10671 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-10 08:47:35 +00:00
yangguo@chromium.org
d7934bd44c MIPS: Convert fast smi-only to fast object in generated code for array push.
Port r10648 (818a1aa).

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10661 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-09 13:32:11 +00:00
kmillikin@chromium.org
831ada2f0d Simplify handler pushing.
Instead of using two separate bits to encode three possible values, use
three values to encode the three possible values.

R=svenpanne@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10654 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-09 09:43:37 +00:00
mstarzinger@chromium.org
34f220001d Simplify stackframe of construct stub on ARM and MIPS.
This unifies the stackframe layout of the generic constructor stub to be
in sync with ia32 and x64. There was an unecessary copy of the construct
function saved on the stack which wasn't used at all.

R=erik.corry@gmail.com

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10653 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-09 09:13:31 +00:00
danno@chromium.org
7639836eca MIPS: Handle single element array growth + transition in generic KeyedStoreIC
Port r10583 (505679e).

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10645 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-08 14:43:36 +00:00
danno@chromium.org
3c6459285c MIPS: Don't allow large immediates for certain instructions.
Some instructions can use >16 bit immediates if they represent a <=16 bit signed value.
However some logical instructions (andi, xori, ori, lui) should always treat the immediate value as unsigned.
This patch adds an ASSERT to these places and a minor change to MacroAssembler::li to satisfy this.

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10644 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-08 14:41:10 +00:00
fschneider@chromium.org
3ed0ab7a73 MIPS: Fix compilation error after removing an unused flag.
TBR=jkummerow@chromium.org
Review URL: https://chromiumcodereview.appspot.com/9348049

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10637 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-08 10:33:30 +00:00
fschneider@chromium.org
0ec7773680 Allow bailing out of the register allocator when running out of virtual registers.
1. Instead of checking upfront and estimating a limit for the number, we
now are able to stop register allocation and bailout when we don't
have enough virtual registers.

2. GCed some out-dated flags from flag-definition.h

3. Simplified the interface from the Lithium builder to the
register allocator in lithium-*.cc: For uses and definitions, we
just record the virtual register number given by the Hydrogen value id.
For temporaries, we request a new virtual register from the allocator.
For fixed temps, we don't need to do anything.

4. Increased number of deoptimization entries to 16K. Eventually we
probably want to make this array grow dynamically.
Review URL: https://chromiumcodereview.appspot.com/9325019

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10597 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-03 12:05:08 +00:00
danno@chromium.org
5a294e5342 MIPS: Fix for assertion failure on kraken on ARM (Issue 1923).
Port r10570 (aa5a8c8e)

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10574 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-01 10:28:00 +00:00
fschneider@chromium.org
86a0e828dc Remove a little more dead code from lithium-* files.
Review URL: http://codereview.chromium.org/9301040

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10571 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-31 15:00:13 +00:00
yangguo@chromium.org
6ab232b1f7 MIPS: Some assembler-level optimizations on ARM.
Port r10541 (0aab14ba).

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10568 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-31 12:45:27 +00:00
danno@chromium.org
ab5d47ef21 MIPS: Improve register allocation for Lithium representation changes on ARM
Port r10538 (21c5dc1).

MIPS-specific changes:
-moved MacroAssembler::SmiTagCheckOverflow definition to macro-assembler-mips.cc from the header
-added optimized 3-argument version of said function
-removed the related, completely unused TrySmiTag function

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10567 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-31 12:33:46 +00:00
fschneider@chromium.org
c26695e75b Remove a dead method from lithium-* files.
Review URL: http://codereview.chromium.org/9297059

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10548 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-30 12:16:31 +00:00
mstarzinger@chromium.org
f97cd1a0ef MIPS: Fix and adapt debugger for new call target caches.
Port of r10540.

R=yangguo@chromium.org
TEST=mjsunit/debug-stepout-scope

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10547 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-30 11:10:14 +00:00
mstarzinger@chromium.org
9ece818b56 MIPS: Implement target cache for constructor calls.
Port r10531 (d61db240).

Original commit message:

This caches call targets of constructor calls by associating one element
caches with call sites. The type feedback oracle can use the recorded
valued to gather type information for monomorphic constructor call sites.

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10546 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-30 10:58:22 +00:00
danno@chromium.org
1c254fb59c MIPS: Store transitioned JSArray maps in global context
Port r10523 (79463).

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10537 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-27 14:40:42 +00:00
danno@chromium.org
18f28fb2c0 MIPS: Added Android-specific version of cacheflush call.
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10518 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-26 16:54:44 +00:00
vegorov@chromium.org
c712ecfdb0 MIPS: Support inlining at call-sites with mismatched number of arguments.
Port r10483 (8785a3ef)

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10512 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-26 11:26:45 +00:00
kmillikin@chromium.org
cb876c25a4 Include what you use for allocation, api, assembler, and ast.
R=fschneider@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10505 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-25 16:31:25 +00:00
erik.corry@gmail.com
83b439a0f9 Further robustify the keyed lookup cache against unlucky hash
seeds.  This change is performance neutral on most snapshot
VM builds, but provides a big improvement on string-fasta
on around 5% of builds.
Review URL: https://chromiumcodereview.appspot.com/9193015

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10478 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-23 16:18:10 +00:00
svenpanne@chromium.org
fd2731a7e6 Replaced LookupResult::IsProperty by LookupResult::IsFound where possible.
Yak shaving for map sharing with accessor properties contd.: When CALLBACKS can
have map transitions, simply looking at the property type is not sufficient
anymore to decide if a property is there or not. One has to look at the actual
contents of the descriptor entry then, but this breaks down sometimes when the
lookup is being done with a NULL holder. Luckily enough, we can oftren replace
IsProperty by the simpler IsFound, because we inspect the type immediately
afterwards, anyway.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10474 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-23 12:01:47 +00:00
danno@chromium.org
960923078b MIPS: Make sure transitioned arrays efficiently call builtin Array functions
Port r10356 (69da81).

Original commit message:
Loosen the requirement for Map equivalency on several map checks, including checks up the prototype chain, that are not sensitive to ElementsKinds. These selected map checks should also match against FAST_DOUBLE_ELEMENT and FAST_ELEMENT transitions of the original map. This specifically helps all variants of transitioned JSArrays to still efficiently call builtins like push, pop and sort.

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10461 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-20 14:17:26 +00:00
erik.corry@gmail.com
9672a04de2 Fix keyed lookup cache to have 2 entried per bucket instead
of one in order to reduce collisions.
Review URL: https://chromiumcodereview.appspot.com/9269004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10458 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-20 13:43:21 +00:00
vegorov@chromium.org
1f4ec772f7 MIPS: Change inlined cache of intanceof stub to use indirection through cell.
Port r10380 (46f646).

Original commit message:
The stub was directly patching caller's code without issuing write barrier which violated incremental marking invariants.

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10457 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-20 12:50:39 +00:00
vegorov@chromium.org
4de11a7bee MIPS: Allow call-known-global and call-constant-function to be used
for call-sites with mismatched number of arguments.

Port r10424 (92a05c9c).

Original commit message:
Adjust InvokeFunction to avoid generating dead code when number when arity mismatch is detected in compile time.

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10456 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-20 12:49:43 +00:00
erik.corry@gmail.com
ae698e73f4 MIPS: Use shift and add instead of mul on ARM for integer hash. This is a commit of http://codereview.chromium.org/9192011/ for Daniel Kalmar
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10442 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-19 14:08:48 +00:00
kmillikin@chromium.org
b571bd2ce9 MIPS: Fix for an ARM register allocation bug.
Port r10374 (03bbe39).

Note: the MIPS version was not affected by the bug. This is merely a style cleanup.

Original commit message:
An off-by-one in the register allocator could lead to allocating (and
clobbering) the reserved 0.0 double register.  This required a function with
14 or more live double values.

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10440 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-19 13:41:11 +00:00
fschneider@chromium.org
48a24b9224 MIPS: Tiny improvement of register constraints in LClassOfTest instructions.
Port r10379 (3399d6).

Original commit message:
The input register does not need to be made writable. We already
allocate enough temp registers and the input register will always
be preserved.

BUG=
TEST=
Review URL: http://codereview.chromium.org/9254025

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10437 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-19 13:07:46 +00:00
yangguo@chromium.org
5b81bd0f0c MIPS: Inlining Math.min and Math.max in crankshaft.
Port r10391 (7900f3c).

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10436 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-19 12:42:20 +00:00
yangguo@chromium.org
6d0d6a5695 Recursion limit for one-char string replace and retire String::kMinNonFlatLength.
TEST=mjsunit/string-replace-one-char.js

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10422 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-17 14:29:17 +00:00
erik.corry@gmail.com
70da367f6b More spelling changes.
Review URL: http://codereview.chromium.org/9231009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10407 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-16 12:38:59 +00:00
erik.corry@gmail.com
48f239e087 Spellling mistakes.
Review URL: http://codereview.chromium.org/9123031

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10403 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-16 09:46:21 +00:00
erik.corry@gmail.com
40a433c9e0 Split NumberDictionary into a randomly seeded and an unseeded
version. We don't want to randomize the stub cache.
Review URL: http://codereview.chromium.org/9174023

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10402 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-16 09:44:35 +00:00
erik.corry@gmail.com
b3e0761e38 Cosmetic changes ("set up" is a verb, "setup" is a noun).
Review URL: http://codereview.chromium.org/9139051

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10399 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-13 13:09:52 +00:00
ager@chromium.org
430c64d182 Port Math.random change to MIPS.
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10386 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-11 12:19:11 +00:00
fschneider@chromium.org
9e0be36948 Avoid recording unnecessary deoptimization environments in a couple of places.
This reduces the number of uses and potentially shortens live ranges.
Review URL: http://codereview.chromium.org/8983018

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10370 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-10 16:06:32 +00:00
erik.corry@gmail.com
6a5afd9403 MIPS: Check that address given to __RecordWrite is correct.
ARM: Clean up equivalent functionality on ARM.
This subsumes http://codereview.chromium.org/8561001/
Review URL: http://codereview.chromium.org/9168006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10368 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-10 13:43:44 +00:00
erik.corry@gmail.com
dc9910f4a4 Minor cleanups of numeric seeded hashing patch.
Review URL: http://codereview.chromium.org/9155010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10367 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-10 13:24:18 +00:00
erik.corry@gmail.com
6178a8d42c Add seed to hash of numeric keyed properties. This is a commit of http://codereview.chromium.org/9148006/ for Fedor Indutny.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10366 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-10 12:58:41 +00:00
erik.corry@gmail.com
0aff6c26d3 Fix zero hash handling on ARM.
Some cleanup.
Review URL: http://codereview.chromium.org/9169010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10362 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-10 12:01:04 +00:00
erik.corry@gmail.com
4bea3b5c54 Fix test-hashing after recent changes to string hashing.
Acriave test-hashing in SCons and buildbot runs.
Small cleanups in root register handling on ARM and MIPS.
Review URL: http://codereview.chromium.org/9110029

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10351 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-06 11:33:20 +00:00
vegorov@chromium.org
50f235fe49 MIPS: Avoid embedding new space objects into code objects in the lithium gap resolver.
Port r10301 (c91aeb4c).

BUG=
TEST=

Review URL: http://codereview.chromium.org/9032005
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10335 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-05 09:26:15 +00:00
erik.corry@gmail.com
81a0271004 Randomize the seed used for string hashing. This helps guard against
CPU-eating DOS attacks against node.js servers.  Based on code from
Bert Belder.  This version only solves the issue for those that compile
V8 themselves or those that do not use snapshots.  A snapshot-based
precompiled V8 will still have predictable string hash codes.
Review URL: http://codereview.chromium.org/9086006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10330 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-04 15:12:15 +00:00
danno@chromium.org
0f8be1f92f MIPS: Undo allocation of half-formed array during elements transition
Port r10320 (bb429e82)

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10327 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-04 09:40:47 +00:00
danno@chromium.org
b6e11b5bcc MIPS: Add InternalArrayCodeGeneric
Port r10308 (4e74cc88)

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10326 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-04 09:39:35 +00:00
danno@chromium.org
2063b374d6 MIPS: Ensure that InternalArrays remain InternalArrays regardless of how they are constructed.
Port r10306 (9141da8e)

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10325 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-04 09:38:08 +00:00
danno@chromium.org
2961627f11 MIPS: fix bug in KeyedStoreIC::GenerateNonStrictArguments()
r8425 (1081f75) had fixed this originally, but those changes were
accidentally reverted when the experimental/gc branch was merged
at r9600.

BUG=
TEST=debug mozilla regress-137181

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10302 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-27 08:41:30 +00:00
fschneider@chromium.org
70056762f1 Remove unnecessary environment from LStoreKeyedFastElements.
This was a left-over from a time when bounds-check was performed
as part of this instruction.

I also refactored and improved the code for smi-only arrays.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10300 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-22 16:23:47 +00:00
danno@chromium.org
59db8059a3 MIPS: Support Smi->Double->HeapObject transitions in constructed Arrays.
Port r10218 (1f42dff).

Original commit message:

Also several bugs with Smi/double elements handling and make Ensure* routines more flexible.

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10282 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-20 12:59:23 +00:00
kmillikin@chromium.org
76cc6878fc MIPS: Clean up handling of global cell stores in the optimizing compiler.
Port r10280 (5f6aec5).

Original commit message:

Tell the register allocator the value is not overwritten.  Never use
temporary registers on ia32, avoid them on x64 and ARM.  Restore the
original copyright date on assembler.cc.

BUG=
TEST=

Review URL: http://codereview.chromium.org/9004017
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10281 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-20 12:36:36 +00:00
yangguo@chromium.org
b4e39dae3b MIPS: Porting r10252 to ARM.
Port r10262 (694b67).

BUG=
TEST=

Review URL: http://codereview.chromium.org/8947017
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10265 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-15 14:04:50 +00:00
yangguo@chromium.org
216564af58 MIPS: Porting r10221 to ARM (avoid bailing out to runtime for short substrings).
Port r10250 (77889cc).

BUG=
TEST=

Review URL: http://codereview.chromium.org/8953013
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10264 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-15 13:38:46 +00:00
mstarzinger@chromium.org
502039a6bd Fix invalid usage of StoreIC_ArrayLength optimization.
This introduces an additional check into the StoreIC_ArrayLength builtin
checking that the array still has fast properties. Redifinitions of the
length property that would cause it's type or attributes to change, will
switch to slow properties, thereby invalidating said optimization.

R=svenpanne@chromium.org
BUG=v8:1756
TEST=test262

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10254 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-14 12:46:32 +00:00
fschneider@chromium.org
626454a61a [hydrogen] don't bailout assignments to consts
If constant variable is allocated in CONTEXT

Patch by Fedor Indutny <fedor.indutny@gmail.com>.

BUG=
TEST=
R=vegorov@chromium.org
Review URL: http://codereview.chromium.org/8857001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10244 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-13 17:10:34 +00:00
keuchel@chromium.org
7348d910f2 MIPS: Hydrogen support for context allocated harmony bindings.
Port r10220 (1dae466).

Original commit message:

This CL adds support for loading from and storing to context slots
belonging to harmony let or const bound variables. Checks for the
hole value are performed and the function is deoptimized if they fail.
The full-codegen generated code will take care of properly throwing
a reference error in these cases.

BUG=
TEST=

Review URL: http://codereview.chromium.org/8897025
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10235 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-12 08:48:39 +00:00
yangguo@chromium.org
6fdf50c040 MIPS: Port Math.pow inlining to ARM.
Port r10210 (6b15398) and r10226 (cdc75a453).

BUG=
TEST=

Review URL: http://codereview.chromium.org/8896021
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10234 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-12 08:26:42 +00:00
ricow@chromium.org
c64fe2ecae MIPS: Reland 10216 - Optimize the equality check case of ICCompare stubs.
Port r10219 (56686b).

Original commit message:

Now with arm and x64 support. Additionally, added default unreachable case to switch statement in CompareIC::TargetState to make win and mac compilers happy.

Reviewer guide:
This is an exact copy of 10216 except:
src/arm/*
src/x64/*
src/ic.cc (added default case to swith in CompareIC::TargetState)

BUG=
TEST=
Review URL: http://codereview.chromium.org/8896022

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10232 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-12 06:38:29 +00:00
yangguo@chromium.org
f206e15c42 MIPS: Fixing MathPowHalf on ARM.
Port r10166 (b57f3f1a), r10167 (202eada9) and r10170 (5c5c96da).

BUG=
TEST=

Review URL: http://codereview.chromium.org/8822014
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10214 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-08 14:36:36 +00:00
fschneider@chromium.org
150814a4ad MIPS: Port to x64 and ARM and some refactoring of ia32.
Port r10174 (a410586).

BUG=
TEST=
Review URL: http://codereview.chromium.org/8821024

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10211 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-08 08:53:09 +00:00
danno@chromium.org
aaf393a4dc MIPS: Optimize Crankshaft array literal initialization from boilerplate.
Port r10138 (730f5a7f)

Original commit message:

BUG=
TEST=

Review URL: http://codereview.chromium.org/8789012
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10191 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-07 13:00:11 +00:00
fschneider@chromium.org
c1662a199b Fix a bug with register use in optimized Math.round.
We're not allowed to modify the input register and have to
use a temporary instead, otherwise the result of expressions
containing Math.round can be wrong.

BUG=106351
TEST=test/mjsunit/compiler/regress-106351.js
Review URL: http://codereview.chromium.org/8833007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10190 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-07 10:13:46 +00:00
erik.corry@gmail.com
f6eab29d73 Remove write barriers for cells on x64, ARM and MIPS.
Review URL: http://codereview.chromium.org/8834005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10188 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-07 08:49:06 +00:00
yangguo@chromium.org
d5fdb76028 Implement Math.pow using FPU instructions and inline it in crankshaft (ia32).
Review URL: http://codereview.chromium.org/8749002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10133 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-02 08:06:37 +00:00
danno@chromium.org
540ac179dc MIPS: Port array literal changes on ARM.
Port r10085 (1ef7d5eb2).

This patch also contains a fix for StoreArrayLiteralElementStub::Generate which is only used from this code.

Original commit message:
Includes general array boilerplate copier and re-introduction FAST_ELEMENT optimizations in full-codegen.

BUG=
TEST=

Review URL: http://codereview.chromium.org/8743010
Patch from Daniel Kalmard <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10129 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-01 14:40:13 +00:00
mstarzinger@chromium.org
830f763b07 MIPS: Implement crankshaft support for nested object literals.
Port r10061 (c648e1d1)

Original commit message:
This generates optimized code for deep-copying of nested object literal
boilerplates which are statically known. Most of the boilerplates have
already been generated at crankshaft time, so this optimization should
kick in for virtually every object literal. Only nested object literal
graphs up to a certain depth and containing up to a certain total number
of properties are considered for this optimization. This will prevent
explosion of code size due to large object literals (e.g. eval on JSON).
Improves splay performance because object literals are created often.

BUG=
TEST=

Review URL: http://codereview.chromium.org/8745012
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10128 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-01 14:32:26 +00:00
mstarzinger@chromium.org
75a8165950 MIPS: Implement code stub for object literal creation.
Port r10056 (ffa6eedd8).

Original commit message:
This just ports r10036 to the ARM codegenerator. Please see the original
revision for a detailed description.

BUG=
TEST=

Review URL: http://codereview.chromium.org/8747011
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10124 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-01 14:12:30 +00:00
yangguo@chromium.org
d9dc9104af MIPS: Add external strings support to regexp in generated code.
Port r10070 (4d7e5a8a)

Original commit message:
TEST=test/mjsunit/string-external-cached.js

BUG=

Review URL: http://codereview.chromium.org/8744012
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10109 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-01 08:39:22 +00:00
yangguo@chromium.org
ab924c3d8a MIPS: Porting r10023 and r10054 to arm (pointer cache for external strings).
Port r10059 (c32f98a9)

Original commit message:

BUG=
TEST=

Review URL: http://codereview.chromium.org/8746015
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10107 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-01 08:31:09 +00:00
yangguo@chromium.org
d117e9d925 MIPS: Implement Math.tan in generated code.
Port r10067 (593c1ea) and r10069 (87a06dc).

BUG=
TEST=

Review URL: http://codereview.chromium.org/8743009
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10098 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-30 16:47:54 +00:00
yangguo@chromium.org
5371508b4f MIPS: Catch non-string subject in RegExpExecStub.
Port r10064 (9c6789a3)

Original commit message:
There is no test case to trigger any crash. This is only to guard against the case that the native function is called with unsafe arguments.

BUG=
TEST=

Review URL: http://codereview.chromium.org/8742012
Patch from Daniel Kalmar <kalmard@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10097 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-30 16:36:00 +00:00
fschneider@chromium.org
9418d56858 Fix bug when generating padding to ensure space for lazy deoptimization.
BUG=v8:1846
Review URL: http://codereview.chromium.org/8725030

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10087 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-29 12:39:28 +00:00
kmillikin@chromium.org
0a7010458a Remove the static qualifier from functions in header files.
This shaves 416+ KB, just under 1% off the size of the debug d8 executable
on Linux (mostly because the CheckHelper functions for assertions were
getting separate copies for each compilation unit).  The difference in
release builds is negligible---a size reduction of 0.1%.

Also, change namespace-level 'static const' variables to remove the static
storage class as it's the default.

R=danno@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10083 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-29 10:56:11 +00:00
keuchel@chromium.org
1e9a7267ab Introduce extended mode.
This CL introduces a third mode next to the non-strict
(henceforth called 'classic mode') and 'strict mode'
which is called 'extended mode' as in the current
ES.next specification drafts. The extended mode is based on
the 'strict mode' and adds new functionality to it. This
means that most of the semantics of these two modes
coincide.

The 'extended mode' is entered instead of the 'strict mode'
during parsing when using the 'strict mode' directive
"use strict" and when the the harmony-scoping flag is
active. This should be changed once it is fully specified how the 'extended mode' is entered.

This change introduces a new 3 valued enum LanguageMode
(see globals.h) corresponding to the modes which is mostly
used by the frontend code. This includes the following
components:
* (Pre)Parser
* Compiler
* SharedFunctionInfo, Scope and ScopeInfo
* runtime functions: StoreContextSlot,
  ResolvePossiblyDirectEval, InitializeVarGlobal,
  DeclareGlobals

The old enum StrictModeFlag is still used in the backend
when the distinction between the 'strict mode' and the 'extended mode' does not matter. This includes:
* SetProperty runtime function, Delete builtin
* StoreIC and KeyedStoreIC
* StubCache

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10062 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-24 15:17:04 +00:00
fschneider@chromium.org
be1a94b626 MIPS: Landing: [hydrogen] optimize switch with string clauses.
Port r10019 (9bbb78bf)

Original commit message:
Patch by Fedor Indutny <fedor.indutny@gmail.com>.

BUG=
TEST=
Review URL: http://codereview.chromium.org/8574073

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10043 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-22 13:51:56 +00:00
kmillikin@chromium.org
29b5ceb897 MIPS: Add a level of indirection to exception handler addresses.
Port r9977 (9aded78be4).
Note: This is the port of the reapplied patch, not the original.

Original commit message:

To support deoptimization of exception handlers, the handler address in the
stack is converted to a pair of code object and an index into a separate
table of code offsets.  The index part is invariant under deoptimization.
The index is packed into the handler state field so that handler size does
not change.

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10039 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-21 14:05:18 +00:00
yangguo@chromium.org
f0878c8424 MIPS: Change generated code for substring not to bail out to runtime system.
Port r10012 (09c6bcba81).

Original commit message:
There is no need to bail out to runtime system when creating sliced strings of external strings since the string content is unimportant.

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10027 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-18 09:13:01 +00:00
fschneider@chromium.org
aa3004d21f MIPS: Fix lazy deoptimization at HInvokeFunction and enable target-recording call-function stub.
Port r10006 (4b344a03).

Original commit message:

Changes the way we do lazy deoptimization:

1. For side-effect instructions, we insert the lazy-deopt call at
the following LLazyBailout instruction.

     CALL
     GAP
     LAZY-BAILOUT ==> lazy-deopt-call

2. For other instructions (StackCheck) we insert it right after the
instruction since the deopt targets an earlier deoptimization environment.

   STACK-CHECK
   GAP ==> lazy-deopt-call

The pc of the lazy-deopt call that will be patched in is recorded in the
deoptimization input data. Each Lithium instruction can have 0..n safepoints.
All safepoints get the deoptimization index of the associated LAZY-BAILOUT
instruction. On lazy deoptimization we use the return-pc to find the safepoint.
The safepoint tells us the deoptimization index, which in turn finds us the
PC where to insert the lazy-deopt-call.

Additional changes:
* RegExpLiteral marked it as having side-effects so that it
  gets an explicitlazy-bailout instruction (instead of
  treating it specially like stack-checks)
* Enable target recording CallFunctionStub to achieve
  more inlining on optimized code.

BUG=
TEST=
Review URL: http://codereview.chromium.org/8587008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10020 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-17 14:33:49 +00:00
danno@chromium.org
3c5b91029b MIPS: Cleaned up an unused declaration in lithium-codegen-mips.h.
DoDeferredBinaryOpStub is not used (or even defined) anywhere.
MIPS can handle special cases of div, which is the only place it's used in the ARM version.

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10018 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-17 13:36:27 +00:00
danno@chromium.org
b079140101 MIPS: Fixed a minor inconsistency in lithium-codegen-mips.cc
EmitIsObject is only called from one function, DoIsObjectAndBranch.
DoIsObjectAndBranch now passes the temp2 register to EmitIsObject
instead of simply relying on the two functions using the same
lithium scratch register.

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10017 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-17 13:35:15 +00:00
danno@chromium.org
bef75b3496 MIPS: Re-work DoModI.
Changes:
-separated the two code-paths (constant power of 2 divisor similar to ARM and everything else)
-replaced a bailout condition with faster handling (negative modulo result)
-removed a possibly useless mov instruction from one path
-replaced the IsConstantOperand condition with the more meaningful HasPowerOf2Divisor (although in this specific case they're equivalent)

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10016 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-17 13:33:56 +00:00
danno@chromium.org
e99b92723d MIPS: Fix for Ins macro-assembler instruction for non-mips32r2 platforms.
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10015 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-17 13:31:26 +00:00
danno@chromium.org
cfc54e4dac MIPS: Implement runtime function for array literal transitions.
Port r9979(0cf0570a).

Original commit message:

Also simplify ia32 and x64 handing of the trace_elements_transition flag.

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10014 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-17 13:27:58 +00:00
keuchel@chromium.org
b153dcfebf Make eval compilation cache calling scope sensitive.
Review URL: http://codereview.chromium.org/8518001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9984 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-14 08:58:47 +00:00
yangguo@chromium.org
85d4c862f2 Fixing presubmit failure in r9955.
Review URL: http://codereview.chromium.org/8517007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9957 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-10 14:32:29 +00:00
yangguo@chromium.org
07ee3e6e5c Fixing generated hash function on all platforms.
BUG=v8:1808
TEST=cctest/test-hashing.cc

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9956 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-10 14:26:57 +00:00
yangguo@chromium.org
6bd8d27a65 MIPS: Fixed a bug in StringHelper::GenerateTwoCharacterSymbolTableProbe.
r9871 (5baeaf57) changed the fill value for deleted entries in hash tables from null_value to the_hole_value.
This commit changes an assertion in MIPS code that expects this value.

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9955 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-10 14:13:32 +00:00
yangguo@chromium.org
2e5cb9b49f MIPS: Simplify StringCharCodeAt in non-crankshaft codegen.
Port r9936 (61034d).

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9947 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-10 08:07:39 +00:00
yangguo@chromium.org
462f6b16dc MIPS: Repeat last debugger command in the arm simulator when command input is empty.
Port r9937 (c263a9e).

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9946 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-10 08:01:23 +00:00
kmillikin@chromium.org
cefa4cc148 Get rid of CodeStub::TryGetCode.
This function is no longer needed.  It was only used (overly defensively)
when fetching the stack check stub for on-stack replacement patching.

R=vegorov@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9942 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-09 15:44:13 +00:00
yangguo@chromium.org
bf98b6f2ed MIPS: Make _CallFunction proxy-aware.
Port r9916 (d2195670)

Original commit message:
Change calling convention for CallFunction stub. Some fixes regarding strict mode call traps.

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9929 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-09 12:19:26 +00:00
kmillikin@chromium.org
6cb5ae7ad9 MIPS: Tighten the code for MacroAssembler::ThrowUncatchable.
Port r9909 (56c8728aa).

Original commit message:
Test at the bottom in the unwind loop.  Eliminate the possibility of a
useless move to the eax/rax/r0 register (currently impossible because
this function has two call sites).  Do not explicitly zero the context
because we've already saved 0 as the context in the handler.

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9923 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-09 11:04:41 +00:00
keuchel@chromium.org
72dba271eb Reapply r9870 "Remove some initialization checks based on source positions.".
This reverts r9896 "Revert r9870 due to browser-test failures." See below for
the diff from the previous version for the ia32 platform. The code for other
platforms has been changed accordingly.

TEST=mjsunit/compiler/lazy-const-lookup.js

diff --git a/src/ia32/full-codegen-ia32.cc b/src/ia32/full-codegen-ia32.cc
index 2cbf518..1990f2f 100644
--- a/src/ia32/full-codegen-ia32.cc
+++ b/src/ia32/full-codegen-ia32.cc
@@ -1258,13 +1258,17 @@ void FullCodeGenerator::EmitVariableLoad(VariableProxy* proxy) {
         // binding is initialized:
         //   function() { f(); let x = 1; function f() { x = 2; } }
         //
-        // Check that we always have valid source position.
-        ASSERT(var->initializer_position() != RelocInfo::kNoPosition);
-        ASSERT(proxy->position() != RelocInfo::kNoPosition);
-        bool skip_init_check =
-            var->mode() != CONST &&
-            var->scope()->DeclarationScope() == scope()->DeclarationScope() &&
-            var->initializer_position() < proxy->position();
+        bool skip_init_check;
+        if (var->scope()->DeclarationScope() != scope()->DeclarationScope()) {
+          skip_init_check = false;
+        } else {
+          // Check that we always have valid source position.
+          ASSERT(var->initializer_position() != RelocInfo::kNoPosition);
+          ASSERT(proxy->position() != RelocInfo::kNoPosition);
+          skip_init_check = var->mode() != CONST &&
+              var->initializer_position() < proxy->position();
+        }
+
         if (!skip_init_check) {
           // Let and const need a read barrier.
           Label done;

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9915 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-08 13:28:53 +00:00
fschneider@chromium.org
4627023b38 Revert r9901 to make tree green again.
There was a test failure on x64 mozilla tests.

TBR=ricow@chromium.org
Review URL: http://codereview.chromium.org/8495011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9902 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-08 09:56:09 +00:00
fschneider@chromium.org
cac3008437 [hydrogen] optimize switch with string clauses
Hydrogen should optimize not only SMI clauses, but clauses with string literals
too.

Patch from fedor.indutny <fedor.indutny@gmail.com>.

R=vegorov@chromium.org
BUG=
TEST=
Review URL: http://codereview.chromium.org/8373029

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9901 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-08 09:08:33 +00:00
yangguo@chromium.org
cfc6f31e59 MIPS: Adding assertions to fast elements conversion.
Port r9875 (97dc1e0e).

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9891 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-07 10:31:54 +00:00
keuchel@chromium.org
aad9e50fb4 MIPS: Remove some initialization checks based on source positions.
Port r9870 (959ec43).

Original commit message:

This depends on
http://codereview.chromium.org/8352039 and
http://codereview.chromium.org/8423005 .

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9887 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-07 09:42:54 +00:00
jkummerow@chromium.org
9fa02bc5dd MIPS: Cleanup: use JumpIf[Not]Smi() whenever we can
Port r8322 (7b8b4a951f).

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9885 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-07 08:41:47 +00:00
keuchel@chromium.org
58123bff56 Remove some unnecessary binding initialization checks.
This depends on http://codereview.chromium.org/8352039/ .

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9869 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-03 11:59:51 +00:00
kmillikin@chromium.org
224bbad462 MIPS: Add and use ElementsKind side effect
Port r9847 (fc7590).

Original commit message:

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=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9866 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-03 08:58:37 +00:00
kmillikin@chromium.org
7dac2367c0 MIPS: Remove the forward-bailout stack from the non-optimizing compiler.
Port r9863 (0996dc77)

Original commit message:
This was pretty heavyweight.  It was kept in just for a few corner cases
that assumed it was there.  We can work around them by making sure that the
expression in a reified test context is always really the expression that
was visited in that context; and by inspecting the context manually and
consing up a pair of extra AST IDs for the unusual case of unary not in a
value AST context.

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9865 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-03 08:57:56 +00:00