Commit Graph

3019 Commits

Author SHA1 Message Date
bmeurer@chromium.org
a52f569f93 Simplify known successor block lowering.
R=jarin@chromium.org

Review URL: https://codereview.chromium.org/308593003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21589 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-02 05:33:35 +00:00
verwaest@chromium.org
f4aa3ab03d Don't push eax/rax before calling Runtime_Abort
Additionally delete the unused Throw(BailoutReason)

BUG=
R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/308083006

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21582 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-30 14:27:19 +00:00
bmeurer@chromium.org
e9357a5e77 Refactor HType to get rid of various hacks.
- Move HType to it's own file.
- Add HType::HeapObject and some other useful types.
- Get rid of the broken and useless HType::NonPrimitive.
- Introduce HType::FromType() to convert from HeapType to HType.
- Also add unit tests for HType.
- Fix types in Crankshaft.

R=rossberg@chromium.org

Review URL: https://codereview.chromium.org/300893003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21578 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-29 04:13:50 +00:00
ishell@chromium.org
fdef9ac252 FastCloneShallowArrayStub should not be used it the length of the array is too big as it could eventually exceed the allowed size limit for manually folded allocations.
R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/300283003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21573 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-28 16:00:52 +00:00
mvstanton@chromium.org
54313c8a0f Refactor CallICStub to use a different stub for each customization.
This gives us much more room to customize on different functions, by
using MajorKey to differentiate them.

R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/295383004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21564 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-28 11:29:55 +00:00
yangguo@chromium.org
eaf8718290 Move LiveEdit-related code.
R=ulan@chromium.org

Review URL: https://codereview.chromium.org/300793002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21559 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-28 10:21:46 +00:00
danno@chromium.org
0f929e7a54 Small changes in preparation for Hydrogen-generated KeyedLoadGeneric
R=mvstanton@chromium.org

Review URL: https://codereview.chromium.org/303583002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21535 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-27 15:15:49 +00:00
danno@chromium.org
6fa616ad73 Convert String array index/length hash to BitField
R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/300023011

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21533 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-27 14:55:29 +00:00
jochen@chromium.org
276adeda1a Replace STATIC_CHECK with STATIC_ASSERT.
It's just an alias, and STATIC_ASSERT is used way more often

BUG=none
R=jkummerow@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/304553002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21527 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-27 13:43:29 +00:00
yangguo@chromium.org
95a9c7e565 Merge Debugger and Debug.
R=ulan@chromium.org

Review URL: https://codereview.chromium.org/301633005

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21524 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-27 13:20:58 +00:00
danno@chromium.org
621c7eb673 Convert ElementsKind into a BitField
R=yangguo@chromium.org

Review URL: https://codereview.chromium.org/306513002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21515 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-27 09:38:01 +00:00
jochen@chromium.org
84e078e561 Reland 21502 - "Move OS::MemCopy and OS::MemMove out of platform to utils"
Verified that arm builds locally.

BUG=none
TBR=jkummerow@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/306473004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21512 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-27 07:57:22 +00:00
bmeurer@chromium.org
7e8678bbaa Avoid HeapObject check in HStoreNamedField.
This way an HStoreNamedField instruction can never deoptimize
itself, which is another important step towards a working
store elimination.

R=jarin@chromium.org

Review URL: https://codereview.chromium.org/299373005

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21509 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-27 07:17:08 +00:00
bmeurer@chromium.org
6ae4a89e79 Relax register constraints for LMathSqrt.
R=jarin@chromium.org

Review URL: https://codereview.chromium.org/299423005

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21505 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-27 04:19:18 +00:00
jochen@chromium.org
eabd5a19b9 Revert 21502 - "Move OS::MemCopy and OS::MemMove out of platform to utils"
TBR=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/297303004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21504 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-26 19:56:27 +00:00
jochen@chromium.org
a5a21a0da4 Move OS::MemCopy and OS::MemMove out of platform to utils
Since both are jitted on some platforms and depend on codegen, they
don't belong to the platform abstraction. At the same time, I can't put
them to codegen.h, as this would introduce cyclic dependencies.

BUG=none
R=jkummerow@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/302563004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21502 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-26 19:33:15 +00:00
mvstanton@chromium.org
d755611e93 Reland "Customized support for feedback on calls to Array." and follow-up fixes.
Comparing one CallIC::State to another was not done correctly, leading to a failure to patch a CallIC when transitioning from monomorphic Array to megamorphic.

BUG=chromium:377198,chromium:377290
LOG=Y
R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/305493003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21499 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-26 13:59:24 +00:00
hpayer@chromium.org
6ed0102b1d Remove high promotion mode.
BUG=
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/296413004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21493 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-26 12:58:55 +00:00
jochen@chromium.org
0d1dc27eda Reland 21482 - "Merge v8globals.h and globals.h"
> BUG=none
> R=mstarzinger@chromium.org
> LOG=n
>
> Review URL: https://codereview.chromium.org/293363006

BUG=none
TBR=mstarzinger@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/295373003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21490 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-26 11:28:08 +00:00
jkummerow@chromium.org
60e665627d Revert "Customized support for feedback on calls to Array." and follow-up fixes.
This reverts r21429, r21434, r21435, r21440, r21445.

BUG=chromium:377198
LOG=y
R=mvstanton@chromium.org

Review URL: https://codereview.chromium.org/300693002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21484 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-26 09:04:00 +00:00
verwaest@chromium.org
53bbe2aec9 Revert "Merge v8globals.h and globals.h"
Because of tree redness.

TBR=jochen@chromium.org

Review URL: https://codereview.chromium.org/306443002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21483 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-26 08:39:04 +00:00
jochen@chromium.org
cd818d697d Merge v8globals.h and globals.h
BUG=none
R=mstarzinger@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/293363006

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21482 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-26 08:15:13 +00:00
bmeurer@chromium.org
683bc694ad Skip write barriers in the fast case when setting up local context.
The FastNewContextStub always allocates in new space, so we don't
need to update the write barrier when copying the parameters to
the newly allocated context.

R=hpayer@chromium.org

Review URL: https://codereview.chromium.org/297203002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21481 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-26 08:13:09 +00:00
bmeurer@chromium.org
cdcee29ef7 LoadUint32() doesn't need a scratch register.
R=jarin@chromium.org

Review URL: https://codereview.chromium.org/293363005

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21476 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-26 06:41:21 +00:00
alexandre.rames@arm.com
8d334ed1dc Allow HPushArgument to handle more than one argument.
R=ulan@chromium.org

Review URL: https://codereview.chromium.org/296113008

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21468 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-23 14:06:42 +00:00
alexandre.rames@arm.com
18412a83b0 Provide a helper to generate multiple Lithium instructions for one Hydrogen instruction.
R=jkummerow@chromium.org, ulan@chromium.org

Review URL: https://codereview.chromium.org/296993002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21465 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-23 13:15:07 +00:00
ishell@chromium.org
4b9c03050a Reland r21442 "Inobject slack tracking is done on a per-closure basis instead of per-shared info basis."
This fixes inobject slack tracking for prototype inheritance pattern that uses closures.

R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/292183008

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21457 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-23 08:52:05 +00:00
ishell@chromium.org
9f3183f76b Revert "Reland r21346 "Inobject slack tracking is done on a per-closure basis instead of per-shared info basis.""
This reverts r21442.

TBR=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/292433016

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21444 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-22 17:13:28 +00:00
ishell@chromium.org
00b8e6128f Reland r21346 "Inobject slack tracking is done on a per-closure basis instead of per-shared info basis."
This fixes inobject slack tracking for prototype inheritance pattern that uses closures.

R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/290993009

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21442 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-22 16:22:23 +00:00
ishell@chromium.org
58932c6c44 Revert "Inobject slack tracking is done on a per-closure basis instead of per-shared info basis."
This reverts r21436.

TBR=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/295933012

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21437 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-22 13:38:32 +00:00
ishell@chromium.org
4a47cc5f63 Inobject slack tracking is done on a per-closure basis instead of per-shared info basis.
This fixes inobject slack tracking for prototype inheritance pattern that uses closures.

R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/283383006

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21436 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-22 12:35:45 +00:00
mvstanton@chromium.org
e443c89206 Customized support for feedback on calls to Array.
Gather transition feedback on array calls, and inline the Array
function call when it makes sense.

R=danno@chromium.org

Review URL: https://codereview.chromium.org/279423005

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21429 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-22 09:30:02 +00:00
danno@chromium.org
def6cff3da Allow specifying base offset when constructing Keyed hydrogen instructions
This is preparation for pending hydrogen stub work that needs to access memory using KeyedLoad/KeyedStore operations where the base offset used for the accesses are is the the default (e.g. the size of an FixedArray header for FixedArrays or zero for external arrays).

R=mvstanton@chromium.org

Review URL: https://codereview.chromium.org/295913009

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21426 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-22 08:37:50 +00:00
yangguo@chromium.org
f01f0e6c42 Remove check for SAHF support in ia32.
On ia32, SAHF is guaranteed. It's only necessary to probe for it on x64.

R=svenpanne@chromium.org
BUG=376087
LOG=N

Review URL: https://codereview.chromium.org/296133006

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21422 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-22 08:04:17 +00:00
yangguo@chromium.org
6fd69c2476 Remove special debug ExternalReferences.
R=ulan@chromium.org

Review URL: https://codereview.chromium.org/296043002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21421 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-22 07:57:33 +00:00
yangguo@chromium.org
7e1c789685 Remove unused thread locals from debugger.
R=ulan@chromium.org

Review URL: https://codereview.chromium.org/286903003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21391 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-20 15:20:02 +00:00
bmeurer@chromium.org
a7e19c1a43 Revert "Refactor transitioning stores."
This reverts commit r21383 for breaking the Mozilla tests.

TBR=hpayer@chromium.org

Review URL: https://codereview.chromium.org/292993003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21386 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-20 13:03:25 +00:00
bmeurer@chromium.org
b09989ec58 Refactor transitioning stores.
There's actually no need to have the transition as part of the HStoreNamedField instruction. In fact, it is cleaner and faster to generate a separate HStoreNamedField for the transition map. This will also help to eliminate map stores with store elimination, as well as reduce register pressure for transitioning stores on ia32.

R=hpayer@chromium.org

Review URL: https://codereview.chromium.org/295743002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21383 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-20 11:06:23 +00:00
ishell@chromium.org
2a62cce170 Reland "v8::TryCatch now works correctly with ASAN's UseAfterReturn mode enabled."
BUG=chromium:369962
LOG=N
R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/282783004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21382 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-20 10:13:46 +00:00
rmcilroy@chromium.org
63199d0bfe Avoid flushing the icache unnecessarily when updating target addresses in code.
This CL updates RelocInfo update operations and set_target_address_at to enable
skipping of the icache flush if it going to be batched up later.
Code::CopyFrom and Code::Relocate are modified to avoid individual icache
flushes since the whole code area will be flushed after the reloc info is
updated.

These changes reduce a regression when enabling the OOL constant pool on Arm,
since this change can cause MovT/MovW instructions for relocatable targets
if the constant pool is full.

Scores for Mandreel latency on a Nexus 5:
 - OOL CP disabled: 3533
 - OOL CP enabled, without this CL: 1825
 - OOL CP enabled, with change: 3015

R=rodolph.perfetta@arm.com, ulan@chromium.org

Review URL: https://codereview.chromium.org/284153004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21380 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-20 09:21:45 +00:00
svenpanne@chromium.org
ec23d0b815 Allow comparison in UINT32 mode.
Shamelessly based on parts of https://codereview.chromium.org/288853003/. :-)

R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/288383002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21355 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-19 07:47:09 +00:00
bmeurer@chromium.org
ecadc63b60 Partial revert of "Next bunch of fixes for check elimination".
This reverts the part of r21154 that introduced the CHECK()s to verify
state of objects with stable maps during code generation. The CHECK()s
seem to trigger a non-critical hidden bug in the map stability
mechanism. We will re-add these CHECK()s once the bug is found and
fixed.

BUG=372173
LOG=y
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/287363002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21352 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-19 07:08:47 +00:00
yangguo@chromium.org
fe243379f8 Decouple CpuFeatures from serializer state.
Traditionally, we cross compile a snapshot iff the serializer is enabled.
This will change in the future.

Changes:
 - CpuFeatures probing is done once per process, depending on whether we
   cross compile.
 - CpuFeatures are consolidated into the platform-independent assembler.h
   as much as possible.
 - FLAG_enable_<feature> will only be checked at probing time (already the
   case for ARM).
 - The serializer state is cached by the MacroAssembler.
 - PlatformFeatureScope is no longer necessary.
 - CPUFeature enum values no longer map to CPUID bit fields.

R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/285233010

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21347 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-16 15:18:24 +00:00
yangguo@chromium.org
7a5207803c Refactor MacroAssembler::Prologue.
R=titzer@chromium.org

Review URL: https://codereview.chromium.org/288213002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21329 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-15 12:10:00 +00:00
yangguo@chromium.org
abeb747c92 Simplify DoubleRegister for the ia32 port.
R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/284503002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21284 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-13 09:05:00 +00:00
yangguo@chromium.org
a7a6abbde6 Require CMOV support for the ia32 port.
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/275253004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21279 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-13 08:16:26 +00:00
yangguo@chromium.org
3ccedf8952 Clean up debugger flags.
R=ulan@chromium.org

Review URL: https://codereview.chromium.org/261253005

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21270 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-12 13:47:01 +00:00
danno@chromium.org
71789ea1e5 Reland r20974: Unify and simplify the FastCloneShallowArrayStub
- Don't bake in length/capacity into full codegen calls of stubs,
allowing boilerplates to increase their capacity without regenerating
code.
- Unify all variants of the clone stub into a single,
length-independent version.
- Various tweaks to make sure that the clone stub doesn't spill and
therefore need an eager stack frame.
- Handle all lengths of array literals in the fast case.

R=mvstanton@chromium.org

Committed: https://code.google.com/p/v8/source/detail?r=21230

Review URL: https://codereview.chromium.org/272513004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21253 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-12 07:49:11 +00:00
verwaest@chromium.org
c33a72b27f Revert "Reland r20974: Unify and simplify the FastCloneShallowArrayStub"
This breaks nosnap.

BUG=
R=ishell@chromium.org

Review URL: https://codereview.chromium.org/272243002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21242 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-09 17:56:55 +00:00
verwaest@chromium.org
ed64101bc7 Reland and fix r21225 and r21226
BUG=
R=ishell@chromium.org

Review URL: https://codereview.chromium.org/272203002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21232 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-09 16:18:58 +00:00
danno@chromium.org
36fc96a4b8 Reland r20974: Unify and simplify the FastCloneShallowArrayStub
- Don't bake in length/capacity into full codegen calls of stubs,
allowing boilerplates to increase their capacity without regenerating
code.
- Unify all variants of the clone stub into a single,
length-independent version.
- Various tweaks to make sure that the clone stub doesn't spill and
therefore need an eager stack frame.
- Handle all lengths of array literals in the fast case.

R=mvstanton@chromium.org

Review URL: https://codereview.chromium.org/272513004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21230 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-09 15:55:45 +00:00
ishell@chromium.org
cb1a32885c [Sheriff] This reverts commits r21225 and r21226 for breaking Linux64 build.
Revert "Make BitField3 a raw uint32 field, and move to the start of the map."
Revert "Make space available in bf3 by moving FunctionWithPrototype to bf1"

TBR=verwaest@chromium.org

Review URL: https://codereview.chromium.org/278883002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21227 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-09 14:28:59 +00:00
verwaest@chromium.org
ec195cd929 Make BitField3 a raw uint32 field, and move to the start of the map.
BUG=
R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/272163002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21225 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-09 13:18:25 +00:00
yangguo@chromium.org
3fa6100ed3 Require SSE2 support for the ia32 port.
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/275433004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21223 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-09 13:01:50 +00:00
ishell@chromium.org
ff2d004f85 Presubmit checks recover:
1) runtime/references checks temporarily disabled (56 items left)
2) other errors fixed

R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/277913002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21222 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-09 12:59:24 +00:00
yangguo@chromium.org
c02ad39c10 Clean up stack guard interrupts.
R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/264233005

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21208 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-09 09:13:12 +00:00
bmeurer@chromium.org
7c45d49861 Improve Array.shift() performance for small arrays.
TEST=mjsunit/array-shift,mjsunit/array-shift2,mjsunit/array-shift3
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/279743002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21203 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-09 08:28:25 +00:00
bmeurer@chromium.org
066955e452 Remove GenerateBooleanCheck() since we have a boolean map now.
R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/269343003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21189 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-07 12:18:23 +00:00
bmeurer@chromium.org
b040340fc2 Turn CHECK()s into ASSERT()s.
R=machenbach@chromium.org

Review URL: https://codereview.chromium.org/275433002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21187 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-07 08:42:20 +00:00
mvstanton@chromium.org
f2903b6f6c Fix for 3303 MultithreadedParallelIsolates has a race condition.
The fix is to make the code aging sequence hang off the isolate.

BUG=v8:3303
R=svenpanne@chromium.org
LOG=N

Review URL: https://codereview.chromium.org/261953002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21165 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-06 11:25:37 +00:00
mstarzinger@chromium.org
55c077f96e Remove broken %_Log functionality.
R=yangguo@chromium.org
BUG=

Review URL: https://codereview.chromium.org/265283007

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21160 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-06 09:28:08 +00:00
bmeurer@chromium.org
a051bc5762 Next bunch of fixes for check elimination.
- Canonicalize HCheckMapValue with constant map to
  HCheckMaps, and get rid of the special treatment
  during check elimination.
- Track only stable object maps for HConstants and
  add CHECK()s to verify state during code generation.

R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/263923004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21154 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-06 07:05:07 +00:00
bmeurer@chromium.org
785bdf7c1e Don't add code dependencies eagerly for HCheckMaps.
Instead of adding code dependencies on stable during
graph creation, we now add them during code generation
for those HCheckMaps that survived dead code elimination.

R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/264973013

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21139 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-05 11:03:14 +00:00
svenpanne@chromium.org
96517fbed0 Inlined IsFoundByRuntimeProbingOnly.
It is only used internally at a single place.

R=yangguo@chromium.org

Review URL: https://codereview.chromium.org/265243004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21137 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-05 09:52:03 +00:00
yangguo@chromium.org
db904a20da Always initialize the debugger eagerly.
There is no point doing it lazily, since compiling and executing the tiniest piece of code triggers lazy init.
Also removed some dead code.

R=ulan@chromium.org

Review URL: https://codereview.chromium.org/265593004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21135 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-05 07:10:38 +00:00
bmeurer@chromium.org
7c1036d424 Various cleanups in check elimination.
- Move IsMapAccess() to HObjectAccess.
- Collect the actual objects instead of HStoreNamedFields in
  effects, and also consider HTransitionElementsKind.
- Fix ownership of HCheckMaps::maps() and HLoadNamedField::maps().
- Avoid heavy copying of the same map sets all the time during
  check elimination, and do something useful with the memory
  instead by slightly bumping the maximum number of tracked
  objects.
- Slightly optimize UniqueSet::Contains().

R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/264693011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21133 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-05 06:53:19 +00:00
bmeurer@chromium.org
50d8259fea Fix crash in debug builds introduced with r21110.
Basically we should not check for map deprecation during
code selection, because that may run on the concurrent
compiler thread. So the fix is to move this logic to the
code generation phase instead, which is always run on the
main thread.

R=mvstanton@chromium.org

Review URL: https://codereview.chromium.org/263803005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21112 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-02 08:08:23 +00:00
bmeurer@chromium.org
59e5c97ec0 Don't add code dependencies on transitioning stores eagerly.
R=mvstanton@chromium.org

Review URL: https://codereview.chromium.org/256303007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21110 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-02 06:37:54 +00:00
mvstanton@chromium.org
287f65aec9 CallICStub with a "never patch" approach by default. Patching will
occur only when custom feedback needs to be gathered (future CLs).

Now rebased on https://codereview.chromium.org/254623002/, which moves the type feedback vector to the SharedFunctionInfo.

R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/247373002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21093 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-30 14:33:35 +00:00
mvstanton@chromium.org
15dc39a86f Simplify feedback vector creation and store in SharedFunctionInfo.
LOG=N
BUG=v8:3212
R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/254623002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21085 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-30 10:51:01 +00:00
svenpanne@chromium.org
d60dbdaf27 Unbreak the build after r21083.
TBR=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/266493003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21084 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-30 10:24:03 +00:00
svenpanne@chromium.org
4dca23f825 Added a Isolate* parameter to Serializer::enabled().
This parameter will soon be used when a few pseudo-classes like
Serializer are turned into real classes. The current CL is already big
enough, untying our Gordian knot called "startup" will continue...

BUG=359977
LOG=y
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/260003006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21083 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-30 09:50:58 +00:00
bmeurer@chromium.org
d4b533d41b Bulk update of Google copyright headers in source files.
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/259183002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21035 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-29 06:42:26 +00:00
yangguo@chromium.org
38b82f40d0 Remove some remnants of MaybeObjects in objects.*.
R=hpayer@chromium.org

Review URL: https://codereview.chromium.org/256993003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21027 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-28 15:33:16 +00:00
danno@chromium.org
9aaa5367ba Revert r20974: Unify and simplify the FastCloneShallowArrayStub
Due to Layout test redness.

TBR=mvstanton@chromium.org

Review URL: https://codereview.chromium.org/256873007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21007 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-28 10:28:15 +00:00
ulan@chromium.org
60b14ea631 Convert function.name to API-style accessor and make CallApiGetterStub serializable.
BUG=
R=yangguo@chromium.org

Review URL: https://codereview.chromium.org/254783003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21002 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-28 08:26:35 +00:00
svenpanne@chromium.org
2fe0f48d39 Simplified CPU/CpuFeatures a bit.
This is a necessary intermediate step to disentangle the startup.

In the long run CPU and CpuFeatures should probably be merged,
and Serializer::enabled usage should be radically reduced, but
we're not there yet.

BUG=359977
LOG=y
R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/258993002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21001 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-28 08:18:38 +00:00
jochen@chromium.org
8795d02bfd Enter a description of the change.
Reland 20968 - "Merge v8utils.* and utils.*"

>  BUG=none
>  R=mstarzinger@chromium.org
>  LOG=n
>
>  Review URL: https://codereview.chromium.org/256753002

BUG=none
LOG=n
TBR=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/250733004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20984 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-25 13:47:01 +00:00
jochen@chromium.org
f2a1176f90 Revert 20968 - "Merge v8utils.* and utils.*"
>  BUG=none
>  R=mstarzinger@chromium.org
>  LOG=n
>
>  Review URL: https://codereview.chromium.org/256753002

BUG=none
LOG=n
TBR=danno@chromium.org

Review URL: https://codereview.chromium.org/250823003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20975 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-25 12:21:32 +00:00
danno@chromium.org
198c4769f2 Unify and simplify the FastCloneShallowArrayStub
- Don't bake in length/capacity into full codegen calls of stubs,
  allowing boilerplates to increase their capacity without regenerating
  code.
- Unify all variants of the clone stub into a single,
  length-independent version.
- Various tweaks to make sure that the clone stub doesn't spill and
  therefore need an eager stack frame.
- Handle all lengths of array literals in the fast case.

R=mvstanton@chromium.org

Review URL: https://codereview.chromium.org/257563004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20974 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-25 11:54:01 +00:00
yangguo@chromium.org
cb2f43cb14 Always include debugger support.
Motivation: we do not have test coverage for debuggersupport=off.

R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/256653004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20969 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-25 11:00:37 +00:00
jochen@chromium.org
c0380f6a56 Merge v8utils.* and utils.*
BUG=none
R=mstarzinger@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/256753002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20968 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-25 10:57:34 +00:00
svenpanne@chromium.org
66f0df5a18 Added an Isolate* field to NoTrackDoubleFieldsForSerializerScope, PlatformFeatureScope and BinaryOpIC::State.
The serializer state and even the CPU features will be per-Isolate
later. Currently we get away with global state, because mksnapshot
runs single-threaded and has only 1 Isolate, but this will change.
Furthermore, these changes are yet another prerequisite for removing a
catch-22 at initialization time when we try to enable serialization.

This CL is similar in spirit to r20919, BTW.

BUG=359977
LOG=y
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/250553005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20963 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-25 08:40:23 +00:00
verwaest@chromium.org
a55821eef2 Mark the simulate before EnterInlined with BailoutId::None(), and set ReturnId on EnterInlined. When merging simulates into the simulate before enter-inlined, adopt the last AST id that gets merged into it.
BUG=v8:3282
LOG=n
R=titzer@chromium.org

Review URL: https://codereview.chromium.org/257583004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20949 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-24 15:20:53 +00:00
ishell@chromium.org
cb46971aa3 NameDictionary's key type is now Handle<Name> instead of Name*.
R=yangguo@chromium.org

Review URL: https://codereview.chromium.org/252383006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20947 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-24 14:59:09 +00:00
svenpanne@chromium.org
b8d27f9d38 CodeStubs contain their corresponding Isolate* now. (part 2)
This CL mechanically removes all useless Isolate* parameters from code
stub functions, making things quite a bit simpler.

BUG=359977
LOG=y
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/255543003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20940 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-24 12:07:40 +00:00
svenpanne@chromium.org
dd30db9021 CodeStubs contain their corresponding Isolate* now. (part 1)
This is a purely mechanical change, adding an Isolate* to the CodeStub
constructor and a corresponding field plus a getter. A few methods in
CodeStub and its subclasses can be simplified now, but this is done in
a separate CL.

The underlying reason apart from simplicity is that deep down in the
call chain we need to detect if the serializer is active or not. This
information will be part of the Isolate, not a global variable with
funky synchronization primitives around it (which is fundamentally
wrong and the underlying cause for race conditions and a catch-22
during initialization).

BUG=359977
LOG=y
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/246643014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20919 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-24 06:25:42 +00:00
yangguo@chromium.org
6d250412f1 Clean up some uses of Failures and MaybeObjects.
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/245963007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20914 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-23 15:08:03 +00:00
yangguo@chromium.org
41bfa036b3 Return Object* instead of MaybeObject* from runtime calls.
R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/240053010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20888 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-22 12:50:58 +00:00
bmeurer@chromium.org
376bff2411 Optimize numeric comparison with known successors.
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/246133005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20880 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-22 10:49:28 +00:00
bmeurer@chromium.org
af05141176 Improve code generation for bounds checks.
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/246423005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20872 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-22 08:28:14 +00:00
bmeurer@chromium.org
eccda7f000 Fix field type handling in load elimination.
Drive-by-fix: map_set() must return a pointer to the UniqueSet
instead of a copy.

R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/244383002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20870 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-22 07:24:05 +00:00
adamk@chromium.org
3308cb5857 ES6: Add support for Map/Set forEach
This implements MapIterator and SetIterator which matches
the same constructs in the ES6 spec. However, these 2
iterators are not exposed to user code yet. They are only
used internally to implement Map.prototype.forEach and
Set.prototype.forEach.

Each iterator has a reference to the OrderedHashTable where
it directly accesses the hash table's entries.

The OrderedHashTable has a reference to the newest iterator
and each iterator has a reference to the next and previous
iterator, effectively creating a double linked list.

When the OrderedHashTable is mutated (or replaced) all the
iterators are updated.

When the iterator iterates passed the end of the data table
it closes itself. Closed iterators no longer have a
reference to the OrderedHashTable and they are removed from
the double linked list. In the case of Map/Set forEach, we
manually call Close on the iterator in case an exception was
thrown so that the iterator never reached the end.

At this point the OrderedHashTable keeps all the non finished
iterators alive but since the only thing we currently expose
is forEach there are no unfinished iterators outside a forEach
call. Once we expose the iterators to user code we will need
to make the references from the OrderedHashTable to the
iterators weak and have some mechanism to close an iterator
when it is garbage collected.

BUG=1793, 2323
LOG=Y
R=adamk@chromium.org
TBR=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/238063009

Patch from Erik Arvidsson <arv@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20857 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-17 17:45:32 +00:00
mvstanton@chromium.org
9ce1c5144a Serializer enable/disable flags need thread safety.
BUG=
R=hpayer@chromium.org, svenpanne@chromium.org

Review URL: https://codereview.chromium.org/240193002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20855 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-17 14:45:06 +00:00
danno@chromium.org
59b3dc5812 Remove hand-written assembly ArrayPush stubs
R=mstarzinger@chromium.org, verwaest@chromium.org

Review URL: https://codereview.chromium.org/233293005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20839 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-17 11:37:59 +00:00
bmeurer@chromium.org
779e87b87a Track up to 5 stable maps as field type.
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/240813002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20831 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-17 08:22:22 +00:00
adamk@chromium.org
91618cf1e9 Revert "ES6: Add support for Map/Set forEach"
This reverts https://code.google.com/p/v8/source/detail?r=20823

It broke Windows builds. Will need to find a Windows try bot to figure
out why.

TBR=mstarzinger@chromium.org,arv@chromium.org

Review URL: https://codereview.chromium.org/238973011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20824 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-16 21:19:25 +00:00
adamk@chromium.org
7c300d1f83 ES6: Add support for Map/Set forEach
This implements MapIterator and SetIterator which matches
the same constructs in the ES6 spec. However, these 2
iterators are not exposed to user code yet. They are only
used internally to implement Map.prototype.forEach and
Set.prototype.forEach.

Each iterator has a reference to the OrderedHashTable where
it directly accesses the hash table's entries.

The OrderedHashTable has a reference to the newest iterator
and each iterator has a reference to the next and previous
iterator, effectively creating a double linked list.

When the OrderedHashTable is mutated (or replaced) all the
iterators are updated.

When the iterator iterates passed the end of the data table
it closes itself. Closed iterators no longer have a
reference to the OrderedHashTable and they are removed from
the double linked list. In the case of Map/Set forEach, we
manually call Close on the iterator in case an exception was
thrown so that the iterator never reached the end.

At this point the OrderedHashTable keeps all the non finished
iterators alive but since the only thing we currently expose
is forEach there are no unfinished iterators outside a forEach
call. Once we expose the iterators to user code we will need
to make the references from the OrderedHashTable to the
iterators weak and have some mechanism to close an iterator
when it is garbage collected.

BUG=1793,2323
LOG=Y
TBR=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/240323003

Patch from Erik Arvidsson <arv@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20823 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-16 21:12:27 +00:00
rossberg@chromium.org
926ec656de Implement structural function and array types
Just wanted to add two constructors to a datatype, how ugly can it get?

R=bmeurer@chromium.org, jarin@chromium.org
BUG=

Committed: https://code.google.com/p/v8/source/detail?r=20809

Committed: https://code.google.com/p/v8/source/detail?r=20815

Review URL: https://codereview.chromium.org/228263005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20817 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-16 16:16:37 +00:00
rossberg@chromium.org
e3e81d85bb Revert "Implement structural function and array types"
TBR=jarin@chromium.org
BUG=

Review URL: https://codereview.chromium.org/237963016

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20816 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-16 15:59:39 +00:00
rossberg@chromium.org
6782d9cea3 Implement structural function and array types
Just wanted to add two constructors to a datatype, how ugly can it get?

R=bmeurer@chromium.org, jarin@chromium.org
BUG=

Committed: https://code.google.com/p/v8/source/detail?r=20809

Review URL: https://codereview.chromium.org/228263005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20815 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-16 15:42:22 +00:00
rossberg@chromium.org
a947aeb315 Revert "Implement structural function and array types"
TBR=jarin@chromium.org
BUG=

Review URL: https://codereview.chromium.org/240143003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20810 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-16 13:57:25 +00:00
rossberg@chromium.org
7de4c1c63f Implement structural function and array types
Just wanted to add two constructors to a datatype, how ugly can it get?

R=bmeurer@chromium.org, jarin@chromium.org
BUG=

Review URL: https://codereview.chromium.org/228263005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20809 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-16 13:44:26 +00:00
yangguo@chromium.org
17b33fa1da Handlify code allocation.
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/235153003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20795 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-16 11:38:56 +00:00
adamk@chromium.org
a44e10cad6 Revert "ES6: Add support for Map/Set forEach"
This reverts commit https://code.google.com/p/v8/source/detail?r=20781.

It broke the Win32 builders.

TBR=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/239163012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20782 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-16 01:03:56 +00:00
adamk@chromium.org
a1af5a2a2f ES6: Add support for Map/Set forEach
This implements MapIterator and SetIterator which matches
the same constructs in the ES6 spec. However, these 2
iterators are not exposed to user code yet. They are only
used internally to implement Map.prototype.forEach and
Set.prototype.forEach.

Each iterator has a reference to the OrderedHashTable where
it directly accesses the hash table's entries.

The OrderedHashTable has a reference to the newest iterator
and each iterator has a reference to the next and previous
iterator, effectively creating a double linked list.

When the OrderedHashTable is mutated (or replaced) all the
iterators are updated.

When the iterator iterates passed the end of the data table
it closes itself. Closed iterators no longer have a
reference to the OrderedHashTable and they are removed from
the double linked list. In the case of Map/Set forEach, we
manually call Close on the iterator in case an exception was
thrown so that the iterator never reached the end.

At this point the OrderedHashTable keeps all the non finished
iterators alive but since the only thing we currently expose
is forEach there are no unfinished iterators outside a forEach
call. Once we expose the iterators to user code we will need
to make the references from the OrderedHashTable to the
iterators weak and have some mechanism to close an iterator
when it is garbage collected.

BUG=1793,2323
LOG=Y
R=adamk@chromium.org, mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/236143002

Patch from Erik Arvidsson <arv@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20781 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-16 00:40:03 +00:00
mvstanton@chromium.org
d20bf182dd JumpPatchSites can/should easily deal with uint8 sized offsets.
Motivation is that x64 nosnapshot builds need a 129 byte delta at the moment.

R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/237673007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20776 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-15 15:29:23 +00:00
ulan@chromium.org
a50aca97a2 Reland r20692 "Check stack limit in ArgumentAdaptorTrampoline."
BUG=353058
LOG=N
TEST=mjsunit/regress/regress-353058
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/236633006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20751 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-15 08:26:26 +00:00
bmeurer@chromium.org
6b4d4b7287 Reland "Track field types.".
This is an initial step towards tracking the exact types instead of just
the representations of fields. It adds support to track up to one map of
heap object field values, eliminating various map checks on values
loaded from such fields, at the cost of making stores to such fields
slightly more expensive.

Issues with transitioning stores and fast object literals in Crankshaft
fixed.

TEST=mjsunit/field-type-tracking
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/238773002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20746 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-15 07:36:47 +00:00
jarin@chromium.org
c1a3ab6b4f Revert "Track field types."
Revert r20701.

TBR=bmeurer@chromium.org
BUG=

Review URL: https://codereview.chromium.org/236843002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20704 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-14 08:24:15 +00:00
bmeurer@chromium.org
9cf3909975 Track field types.
This is an initial step towards tracking the exact types instead of just the representations of fields. It adds support to track up to one map of heap object field values, eliminating various map checks on values loaded from such fields, at the cost of making stores to such fields slightly more expensive.

TEST=mjsunit/field-type-tracking
R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/167303005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20701 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-14 06:29:15 +00:00
ulan@chromium.org
4f74f11aca Revert r20692 "Check stack limit in ArgumentAdaptorTrampoline."
Reason: mjsunit/regress/regress-353058 failure on GC-stress.

TBR=mvstanton@chromium.org

Review URL: https://codereview.chromium.org/234813004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20695 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-11 15:59:12 +00:00
ulan@chromium.org
4268ce0abd Check stack limit in ArgumentAdaptorTrampoline.
BUG=353058
LOG=N
TEST=mjsunit/regress/regress-353058
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/215853005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20692 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-11 13:39:19 +00:00
yangguo@chromium.org
a640707213 Implement handlified String::Equals and Name::Equals.
R=ulan@chromium.org

Review URL: https://codereview.chromium.org/225823003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20669 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-11 07:27:25 +00:00
jarin@chromium.org
008a70c47b Revert "Make new space iterable when transitioning double array to objects"
This reverts r20603.

BUG=

Review URL: https://codereview.chromium.org/230863003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20626 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-09 13:39:03 +00:00
jarin@chromium.org
69d5b3c155 Make new space iterable when transitioning double array to objects
R=hpayer@chromium.org
BUG=

Review URL: https://codereview.chromium.org/228643002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20603 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-09 09:50:08 +00:00
svenpanne@chromium.org
341ec1b50e Fixed flooring division by -1 on ARM.
We should avoid ASR #0 on ARM. Simplified and improved code a bit
while we're there on all platforms. Human brains are very bad at
understanding nested structures...

BUG=v8:3259
LOG=y
R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/227553003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20544 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-07 12:08:40 +00:00
mvstanton@chromium.org
9e5757abee Revert "Reland of https://codereview.chromium.org/172523002/"
This reverts commit r20516 due to a Sunspider performance issue.

R=ishell@chromium.org

Review URL: https://codereview.chromium.org/226233002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20521 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-04 16:18:59 +00:00
mvstanton@chromium.org
f9a8425cd2 Reland of https://codereview.chromium.org/172523002/
Fixed
1) Missing line in x64 port.
2) GcStress found a logic error in the IC miss handler.

R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/224903005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20516 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-04 13:57:53 +00:00
svenpanne@chromium.org
f32ef903da Reland "Fixed environment assignment for LCheckNonSmi."
Now with (hopefully correct) ARM64 part... :-}

R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/225313003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20495 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-04 07:07:34 +00:00
jochen@chromium.org
5a57e644d7 Revert r20476.
Reason for revert: crashes arm64.debug cctest

Fatal error in ../src/hydrogen-instructions.h, line 2968
CHECK(value->IsCheckHeapObject()) failed

Fixed environment assignment for LCheckNonSmi.

TBR=svenpanne@chromium.org
BUG=

Review URL: https://codereview.chromium.org/223873003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20484 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-03 14:04:05 +00:00
mvstanton@chromium.org
5c0d85163c Revert r20474
This reverts commit r20474 due to an x64 release issue.

R=yangguo@chromium.org

Review URL: https://codereview.chromium.org/223823002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20478 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-03 12:27:24 +00:00
svenpanne@chromium.org
48ccdd9f7e Fixed environment assignment for LCheckNonSmi.
This fixes browsing facebook.com with a debug version of Chrome.

TBR=ulan@chromium.org

Review URL: https://codereview.chromium.org/223763003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20476 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-03 12:12:28 +00:00
mvstanton@chromium.org
c21cf2d334 Function calls are handled with a LoadIC and a FunctionCallStub. This works well, but we can create a platform to gather custom feedback by inventing a CallIC. CallIC takes a JSFunction as input, maintains UNINIT/MONO/MEGA state in a feedback slot, and engages in limited patching for the most efficient code.
The change creates a degrade in NBody tests, but a follow-on CL addresses it by using this custom feedback platform to give a 45% improvement.

R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/172523002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20474 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-03 11:41:03 +00:00
jarin@chromium.org
0b53ed2d2b Check in Lithium that allocation size in Smi range.
This is to avoid triggering an assertion from Smi::FromInt. The
generated code is unreachable, so it is not a real bug.

R=ulan@chromium.org
BUG=

Review URL: https://codereview.chromium.org/221743005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20458 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-03 07:04:46 +00:00
svenpanne@chromium.org
4e40600485 Check that environments assigned via AssignEnvironment are actually used.
Removed some temporary marker comments on the way.

R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/218403006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20430 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-02 11:30:13 +00:00
rossberg@chromium.org
45118bfdfb Make invalid LHSs that are calls late errors
Necessary for web legacy compatibility.

Also fold in additional strict mode checks into LHS checks.
Minor constness clean-ups on the way.

R=marja@chromium.org
BUG=chromium:358346
LOG=Y

Review URL: https://codereview.chromium.org/217823003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20428 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-02 11:03:05 +00:00
svenpanne@chromium.org
e853c8a996 Fixed build (unused vars in release mode).
TBR=bmeuerer@chromium.org

Review URL: https://codereview.chromium.org/218623017

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20396 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-01 11:59:24 +00:00
svenpanne@chromium.org
497487beec Consistently use a separate Lithium instruction for flooring division.
Previously we tried to share some code on by a slightly confusing re-use
of LDivI for a (general) flooring division. Now we cleanly separate
concerns, just like for the rest of the division-like operations. Note
that ARM64 already did it this way.

If we really want to save some code, we can introduce some macro
assembler instructions and/or helper functions in the code generator in
a future CL, but we should really try to avoid being "clever" to save
just a few lines of trivial code. Effort != complexity. :-)

Renamed some related Lithium operands on the way for more consistency.

R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/212703002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20395 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-01 11:42:42 +00:00
svenpanne@chromium.org
4da732e321 Fixed power-of-2 predicates, excluding 0.
R=dslomov@chromium.org

Review URL: https://codereview.chromium.org/219213003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20383 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-01 09:20:28 +00:00
svenpanne@chromium.org
51c209c609 Only assign environments when they are actually needed. (ARM and ARM64 only)
Twin of https://codereview.chromium.org/210783003/ and https://codereview.chromium.org/211153003/.

Cleaned up DoChange a bit on the way, making things more uniform across platforms, removed useless comments etc.

R=yangguo@chromium.org

Review URL: https://codereview.chromium.org/214613004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20376 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-01 07:21:31 +00:00
verwaest@chromium.org
019e27d8db Reland and fix "Fix LoadFieldByIndex to take mutable heap-numbers into account.""
BUG=
R=hpayer@chromium.org

Review URL: https://codereview.chromium.org/218663005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20358 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-31 14:21:04 +00:00
yangguo@chromium.org
c0fa861726 Do not check for interrupt when allocating stack locals.
R=dcarney@chromium.org
BUG=357137
LOG=N

Review URL: https://codereview.chromium.org/219373004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20357 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-31 14:14:54 +00:00
jochen@chromium.org
163044e7ba Revert 20348 - "Fix LoadFieldByIndex to take mutable heap-numbers into account."
Reason for revert: crashes benchmarks/sunspider/string-fasta on ia32.debug

This also reverts r20350 and r20352

> Fix LoadFieldByIndex to take mutable heap-numbers into account.
>
> BUG=
> R=ishell@chromium.org
>
> Review URL: https://codereview.chromium.org/213213002

BUG=none
LOG=n
TBR=verwaest@chromium.org

Revert "Use sarq on x64"

This reverts commit e2a8ef9321345c6bc091054443bf2b9535ff6b1c.

Revert "Don't | int and bool"

This reverts commit c90d713d3a8ceba4fec41933a63beb6e50a3d7c0.

Review URL: https://codereview.chromium.org/219393002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20354 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-31 13:23:32 +00:00
verwaest@chromium.org
55a6318560 Fix LoadFieldByIndex to take mutable heap-numbers into account.
BUG=
R=ishell@chromium.org

Review URL: https://codereview.chromium.org/213213002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20348 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-31 11:59:29 +00:00
jarin@chromium.org
d65fe51ca0 Add missing lazy deopt point for the TransitionElementsKind instruction.
R=mvstanton@chromium.org, yangguo@chromium.org
BUG=357105
TEST=test/mjsunit/regress/regress-357105.js
LOG=N

Review URL: https://codereview.chromium.org/216963002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20347 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-31 11:58:53 +00:00
yangguo@chromium.org
dae7ecbfdf Reland "Clean up runtime functions for Maths."
BUG=
R=dslomov@chromium.org

Review URL: https://codereview.chromium.org/216643002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20328 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-28 10:07:23 +00:00
yangguo@chromium.org
e8d5e6377e Revert "Clean up runtime functions for Maths."
This reverts r20307.

TBR=jarin@chromium.org

Review URL: https://codereview.chromium.org/214593005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20311 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-27 16:30:03 +00:00
yangguo@chromium.org
1110f4fcbb Clean up runtime functions for Maths.
R=dslomov@google.com, dslomov@chromium.org

Review URL: https://codereview.chromium.org/212763008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20307 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-27 14:45:56 +00:00
yangguo@chromium.org
8847b52097 Reland "Correctly OOM in the CEntryStub after retries."
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/214473003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20297 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-27 10:41:45 +00:00
yangguo@chromium.org
caad1de770 Revert "Correctly OOM in the CEntryStub after retries."
This reverts r20292 due to no-snapshot failures.

TBR=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/214413005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20293 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-27 09:59:07 +00:00
yangguo@chromium.org
3ee0783686 Correctly OOM in the CEntryStub after retries.
This fixes a bug introduced in r20179.

R=jkummerow@chromium.org
BUG=356211
LOG=N

Review URL: https://codereview.chromium.org/213193011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20292 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-27 09:26:47 +00:00
yangguo@chromium.org
9be61ddb8a Hide some runtime functions.
R=dslomov@chromium.org

Review URL: https://codereview.chromium.org/212163004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20285 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-26 15:51:48 +00:00
yangguo@chromium.org
9297e8b4b5 Fix interpreted regexp build.
R=dslomov@chromium.org

Review URL: https://codereview.chromium.org/212473002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20263 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-26 08:55:19 +00:00
dslomov@chromium.org
f66af4feb4 Refactor optimized in hydrogen only runtime functions.
This splits all runtime function into 3 categories:
1) RUNTIME: implemented in runtime and called from both full and optimized code.
2) RUNTIME_HIDDEN: implemented in runtime, never called directly from JS builtins.
3) INLINE: inlined in both full and optimized code
4) INLINE_OPTIMIZED: inlined in optimized code, implemented in runtime for full code.

R=yangguo@chromium.org, yannguo@chromium.org

Review URL: https://codereview.chromium.org/209353006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20252 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-25 14:26:55 +00:00
svenpanne@chromium.org
09753b4a81 Only assign environments when they are actually needed. (ia32 only)
R=yangguo@chromium.org

Review URL: https://codereview.chromium.org/210783003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20231 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-25 10:17:02 +00:00
verwaest@chromium.org
e18e650582 Ensure the constant operand for heap-object store-named-field is not a smi.
BUG=
R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/210193002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20208 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-24 16:25:48 +00:00
svenpanne@chromium.org
3081e1b730 Replaced unreachable code in DoStoreNamedField by an assertion.
This is part of the effort to assign an environment if and only if we can deopt.

Removed some related dead code on the way.

R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/209873005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20194 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-24 13:16:23 +00:00
titzer@chromium.org
df25d21dee IA32: Rename MacroAssembler::Set() and MacroAssembler::SafeSet() to Move() and SafeMove().
R=mstarzinger@chromium.org
BUG=

Review URL: https://codereview.chromium.org/208073003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20192 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-24 13:00:05 +00:00
jkummerow@chromium.org
b7c3cd5e37 [ia32/x64] Smaller instruction to check NaN
substract 1 and test for overflow

BUG=
R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/202083002

Patch from Weiliang Lin <weiliang.lin@intel.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20185 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-24 10:18:27 +00:00
yangguo@chromium.org
8b8fb30e7f Reland "Remove Failure::OutOfMemory propagation and V8::IgnoreOutOfMemoryException."
R=dcarney@chromium.org

Review URL: https://codereview.chromium.org/209903003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20184 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-24 10:07:15 +00:00
yangguo@chromium.org
03866841aa Revert "Remove Failure::OutOfMemory propagation and V8::IgnoreOutOfMemoryException."
This reverts r20179.

TBR=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/201573007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20183 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-24 09:17:18 +00:00
yangguo@chromium.org
62f65d8697 Remove Failure::OutOfMemory propagation and V8::IgnoreOutOfMemoryException.
R=dcarney@chromium.org
BUG=v8:3060
LOG=Y

Review URL: https://codereview.chromium.org/208263002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20179 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-24 08:47:45 +00:00
dcarney@chromium.org
493c6b3543 Do stack checks while pushing locals
R=yangguo@chromium.org

BUG=

Review URL: https://codereview.chromium.org/207543003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20176 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-24 08:17:06 +00:00
titzer@chromium.org
a428b0d588 Add a utility method to the ia32 macro assembler to move a double immediate into an XMM register.
R=mstarzinger@chromium.org
BUG=

Review URL: https://codereview.chromium.org/197233011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20160 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-21 12:16:37 +00:00
ulan@chromium.org
f20a9473f3 Ensure that lazy deopt sequence does not override calls.
BUG=354433
LOG=N
TEST=mjsunit/regress/regress-354433.js
R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/198463006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20155 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-21 11:02:15 +00:00
svenpanne@chromium.org
68237f6590 Implement flooring division by a constant via truncating division by a constant.
R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/204583002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20123 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-20 13:10:23 +00:00
ulan@chromium.org
79ab5448ab Removed obsolete and dead includes.
BUG=353954
LOG=N
R=ulan@chromium.org

Review URL: https://codereview.chromium.org/203593014

Patch from Dmitry Zvorygin <zvorygin@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20085 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-19 15:40:38 +00:00
mvstanton@chromium.org
535f3427ca Pretenure call new support.
When FLAG_pretenure_call_new is on, we emit mementos on new object creation
in full code, and consume the feedback in crankshaft. A key difference in the
generated code for stubs is the allocation of an additional type vector slot for the
CallNew AST node, which simplifies the CallConstructStub and CallFunctionStub
considerably.

Some performance tuning still needs to be addressed, therefore the flag is off at
this moment, though fully functional. The goal is to remove the flag as soon as
possible, which allows much code deletion (yay).

R=hpayer@chromium.org

Review URL: https://codereview.chromium.org/132963012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20076 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-19 13:39:09 +00:00
mvstanton@chromium.org
5e4febb06e Array constructor expects AllocationSite or undefined as feedback.
Redefine Array constructor to expect an AllocationSite in the feedback
register or undefined. This will make code simpler as we support
pretenuring feedback for all constructed objects.

R=hpayer@chromium.org

Review URL: https://codereview.chromium.org/203173003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20064 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-19 11:51:30 +00:00
rmcilroy@chromium.org
0acbcf9876 Reland "Add out-of-line constant pool support to Arm."
This CL adds out-of-line constant pool support to Arm.  A ConstantPoolBuilder
object is introduced to manage building of the ConstantPoolArray for a given
code object.

This CL depends on the following CLs landing first:
  https://codereview.chromium.org/138503002/
  https://codereview.chromium.org/179813005/
  https://codereview.chromium.org/183553003/
  https://codereview.chromium.org/183803022/
  https://codereview.chromium.org/183883011/
  https://codereview.chromium.org/186733006/
  https://codereview.chromium.org/188063002/
  https://codereview.chromium.org/190793002/
  https://codereview.chromium.org/190823002/
  https://codereview.chromium.org/190833002/
  https://codereview.chromium.org/190883002/

R=ulan@chromium.org

Review URL: https://codereview.chromium.org/204323004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20053 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-19 10:32:12 +00:00
yangguo@chromium.org
bd2397c90c Revert "Add out-of-line constant pool support to Arm."
This reverts commit r20051.

TBR=rmcilroy@chromium.org

Review URL: https://codereview.chromium.org/204403002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20052 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-19 09:53:58 +00:00
rmcilroy@chromium.org
9415863c97 Add out-of-line constant pool support to Arm.
This CL adds out-of-line constant pool support to Arm.  A ConstantPoolBuilder
object is introduced to manage building of the ConstantPoolArray for a given
code object.

This CL depends on the following CLs landing first:
  https://codereview.chromium.org/138503002/
  https://codereview.chromium.org/179813005/
  https://codereview.chromium.org/183553003/
  https://codereview.chromium.org/183803022/
  https://codereview.chromium.org/183883011/
  https://codereview.chromium.org/186733006/
  https://codereview.chromium.org/188063002/
  https://codereview.chromium.org/190793002/
  https://codereview.chromium.org/190823002/
  https://codereview.chromium.org/190833002/
  https://codereview.chromium.org/190883002/

R=ulan@chromium.org

Review URL: https://codereview.chromium.org/191233003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20051 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-19 09:38:20 +00:00
svenpanne@chromium.org
1a6f977d6a Tweaked FlooringDiv back to TruncatingDiv again.
This is a first step towards getting the flooring division by a
constant working again (which will be a separate CL).

R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/197873029

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20048 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-19 07:01:08 +00:00
ulan@chromium.org
487ca9e384 Fix TransitionElementsKindStub to handle non-JSArray objects correctly.
BUG=352982
LOG=N
TEST=mjsunit/regress/regress-352982.js
R=danno@chromium.org

Review URL: https://codereview.chromium.org/196343023

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20033 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-18 13:29:29 +00:00
ishell@chromium.org
3b257c35e5 Fixed spec violation of storing to length of a frozen object.
BUG=chromium:350890
LOG=N
R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/196653015

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20005 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-17 15:43:33 +00:00
mvstanton@chromium.org
6a4a934d8d Utility functions for pretenure call new. These functions aren't yet called in the tree but will be in the next days. AssertUndefinedOrAllocationSite is to be used in several places where AllocationSite feedback is optional.
R=hpayer@chromium.org

Review URL: https://codereview.chromium.org/197643008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19998 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-17 13:55:22 +00:00
rossberg@chromium.org
c3c185c173 Make invalid LHSs a parse-time (reference) error
This is required by the spec. It also prevents crashes resulting from the attempt to read type feedback for the RHS of an invalid assignment which full codegen never actually allocated info for.

To do: check properly in preparser already.

R=marja@chromium.org, mstarzinger@chromium.org
BUG=351658
LOG=Y

Review URL: https://codereview.chromium.org/200473003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19976 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-17 10:21:01 +00:00
mvstanton@chromium.org
e3f3f6d98b Revert "Continued fix for 351257. Reusing the feedback vector is too complex."
This reverts commit r19919.

TBR=bmeuer@chromium.org

Review URL: https://codereview.chromium.org/196343021

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19961 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-17 08:31:21 +00:00
rmcilroy@chromium.org
f1f6d3095a Fix deoptimization for out-of-line constant pool.
Ensure that the stack contains the correct constant pool pointer when a
function deopts.

This CL depends on https://codereview.chromium.org/183803022/ landing first.

R=ulan@chromium.org

Review URL: https://codereview.chromium.org/188063002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19940 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-14 15:11:58 +00:00
mvstanton@chromium.org
11df4b8815 Fix for issue 351261.
This relands the following fix: "HAllocate should never generate
allocation code if the requested size does not fit into page. Regression
test included. (bug 347543)" along with additional fixes to KeyedStoreIC.

BUG=351261
LOG=N
R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/200113002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19926 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-14 10:22:55 +00:00
mvstanton@chromium.org
dd28969c1c Continued fix for 351257. Reusing the feedback vector is too complex.
Attempting to re-use the type feedback vector stored in the
SharedFunctionInfo turns out to be difficult among the various cases.
It will be much easier to do this when deferred type feedback processing
is removed, as is in the works.

Created bug v8:3212 to track re-introducing the optimization of reusing
the type vector on recompile before optimization.

The CL also brings back the type vector on the SharedFunctionInfo.

BUG=351257
LOG=Y
R=bmeurer@chromium.org, bmeuer@chromium.org

Review URL: https://codereview.chromium.org/199973004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19919 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-14 09:28:37 +00:00
hpayer@chromium.org
7b810f4593 Revert "Moved type feedback vector to SharedFunctionInfo."
This reverts commit 828f1d563a3f0972135886888fd26526e04da07f.

Conflicts:
	src/compiler.cc
	test/cctest/test-compiler.cc

BUG=
R=titzer@chromium.org

Review URL: https://codereview.chromium.org/196283015

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19911 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-13 17:47:12 +00:00
verwaest@chromium.org
c2af96ba7b Turn StringLengthStub (used by string wrappers only) into a hydrogen stub.
BUG=
R=yangguo@chromium.org

Review URL: https://codereview.chromium.org/197603002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19889 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-13 10:57:07 +00:00
bmeurer@chromium.org
4da15df008 Remove uses of CanBeNegative() in HMod.
BUG=v8:3204
LOG=y
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/195793016

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19878 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-13 08:17:44 +00:00
bmeurer@chromium.org
929313bd6b Remove uses of RangeCanInclude() in flooring division by power of 2.
Drive-By-Fix: Improve ARM code generation for flooring division by
power of 2.

BUG=v8:3204
LOG=y
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/196653009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19877 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-13 07:58:58 +00:00
bmeurer@chromium.org
750f2d98f8 Fix uses of range analysis results in HChange.
BUG=v8:3204
LOG=y
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/195023002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19872 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-13 06:11:52 +00:00
rmcilroy@chromium.org
e57d0296da Reland "Pass a Code object to Assembler::(set_)target_address_at for use by ool constant pool."
The ool constant pool will require a pointer to the code's constant pool when
updating or reading target addresses using set_target_address_at()
and target_address_at().

Original Review URL: https://codereview.chromium.org/183803022

R=ulan@chromium.org

Review URL: https://codereview.chromium.org/195983002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19856 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-12 15:23:54 +00:00
svenpanne@chromium.org
be328fd4ce Disable special handling of flooring division by constant until it is fixed for real.
Added a test to check the various division-like operations more exhaustively.

R=bmeurer@chromium.org, ulan@chromium.org

Review URL: https://codereview.chromium.org/194863002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19852 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-12 14:28:59 +00:00
jkummerow@chromium.org
8a1812f252 Fix lazy deopt after tagged binary ops
Also add policing code to ensure that optimized frames can in fact lazily deopt
at their respective current PC when we patch them for lazy bailout.

BUG=chromium:350434
LOG=y
R=jarin@chromium.org

Review URL: https://codereview.chromium.org/194703008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19834 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-12 09:59:36 +00:00
rmcilroy@chromium.org
0896bd70a2 Revert "Pass a Code object to Assembler::(set_)target_address_at for use by ool constant pool."
This reverts r19825 for breaking ia32.debug checks.

Original Review URL: https://codereview.chromium.org/183803022

Update serializer to be able to deal with ool constant pool.

TBR=ulan@chromium.org

Review URL: https://codereview.chromium.org/195373004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19827 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-11 21:46:26 +00:00
rmcilroy@chromium.org
38732785dd Pass a Code object to Assembler::(set_)target_address_at for use by ool constant pool.
The ool constant pool will require a pointer to the code's constant pool when
updating or reading target addresses using set_target_address_at()
and target_address_at().

R=ulan@chromium.org

Review URL: https://codereview.chromium.org/183803022

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19825 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-11 20:31:23 +00:00
rossberg@chromium.org
8e3f3cee9e Eliminate extended mode, and other modes clean-up
- Merge LanguageMode and StrictModeFlag enums
- Make harmony-scoping depend only on strict mode
- Free some bits on the way
- Plus additional clean-up and renaming

R=ulan@chromium.org
BUG=

Review URL: https://codereview.chromium.org/181543002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19800 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-11 14:41:22 +00:00
rossberg@chromium.org
3f702d4bf9 Mode clean-up pt 1: rename classic/non-strict mode to sloppy mode
R=mstarzinger@chromium.org
BUG=

Review URL: https://codereview.chromium.org/177683002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19799 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-11 14:39:08 +00:00
bmeurer@chromium.org
4ac0876a8c Cleanup some of the range uses in ModI/DivI.
BUG=v8:3204
LOG=y
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/191293013

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19796 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-11 11:57:27 +00:00
titzer@chromium.org
91a2aa6a2c Add MacroAssembler::Move(reg, immediate) on IA32.
BUG=
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/188463003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19780 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-11 08:52:48 +00:00
rmcilroy@chromium.org
9cfd807cba Special case the recording of constant pool entries in the slot buffer.
This CL enables RelocInfo pointers which live in the constant pool to be treated
as normal pointers by the slot buffer, avoiding the requirement of creating fake
RelocInfo objects during UpdateSlots() in order to update these slots.  This
is possible because constant pool entries are just pointers and don't require
the RelocInfo machinary to be updated.

EmbeddedObject constant pool entries can be added untyped to the slot buffer,
while code targets are still typed in order to correctly update the target
address based on the relocated code object.

Note: this is required in order to enable OOL constant pool support on Arm, but
should be benifitial for the current inline constant pool used by Arm code.

R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/179813005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19772 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-10 18:47:57 +00:00
bmeurer@chromium.org
bf86e624d4 Reland "Handle non-power-of-2 divisors in division-like operations".
Fixed the flooring div bug and added a test case.

R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/191293012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19749 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-10 10:39:17 +00:00
dcarney@chromium.org
132d4428e5 allowed keyed store callbacks ic generation
R=verwaest@chromium.org

BUG=

Review URL: https://codereview.chromium.org/173853005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19744 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-10 08:40:03 +00:00
yangguo@chromium.org
4f15fd2977 Reland "Introduce intrinsics for double values in Javascript."
This relands r19704 with a fix to the test case.

R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/189823003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19723 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-07 14:58:41 +00:00
svenpanne@chromium.org
fa6d25a602 Revert "Handle non-power-of-2 divisors in division-like operations", "A64 tweaks for division-like operations." and "Windows build fix.".
This reverts commit 19719, 19720 and 19721 because
mozilla/ecma/Date/15.9.3.1-1 fails (in release mode only?).

TBR=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/189963005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19722 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-07 13:11:56 +00:00
svenpanne@chromium.org
94c450fcb9 Handle non-power-of-2 divisors in division-like operations
R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/190383002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19719 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-07 11:44:04 +00:00
svenpanne@chromium.org
819315db4e Consistenly handle power-of-2 divisors in division-like operations
Lithium currently supports 3 division-like operations on integral operands: "Normal" division (rounding towards zero), flooring division (rounding towards -Infinity) and modulus calculation (the counterpart for the "normal" division). For divisors which are a power of 2, one can efficiently use some bit fiddling to avoid the actual division for such operations. This CL cleanly splits off these operations into separate Lithium instructions, making the code much more maintainable and more consistent across platforms.

There are 2 basic variations of these bit fiddling algorithms: One involving branches and a seemingly more clever one without branches. Choosing between the two is not as easy as it seems: Benchmarks (and probably real-world) programs seem to favor positive dividends, registers and shifting units are sometimes scarce resources, and branch prediction is quite good in modern processors. Therefore only the "normal" division by a power of 2 is implemented in a branch-free manner, this seems to be the best approach in practice. If this turns out to be wrong, we can easily and locally change this.

R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/175143002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19715 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-07 10:36:28 +00:00
mvstanton@chromium.org
1812f63fd2 Moved type feedback vector to SharedFunctionInfo.
Type Vector followup: the type vector currently lives off the code object. This CL moves it to the SharedFunctionInfo, facilitating re-use and continued use in crankshafted code if desired.

R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/178463007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19712 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-07 10:12:17 +00:00
yangguo@chromium.org
143902bebf Revert "Introduce intrinsics for double values in Javascript."
This reverts r19704.

R=mvstanton@chromium.org

Review URL: https://codereview.chromium.org/189533008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19710 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-07 09:49:28 +00:00
mvstanton@chromium.org
1d3652ebe6 Symbols for type cells. We can make more efficient code to check against type cells in the future if we use symbols, guaranteed not to conflict with user code. Currently, the "symbols" are the hole and undefined. Undefined may come in from the outside.
BUG=
R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/181283003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19706 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-07 09:10:18 +00:00
yangguo@chromium.org
2aefde4443 Introduce intrinsics for double values in Javascript.
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/178583006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19704 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-07 09:05:10 +00:00
bmeurer@chromium.org
c6bfbace87 ia32: Simplify inlined Smi code for SAR.
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/188483002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19700 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-07 08:36:53 +00:00
bmeurer@chromium.org
a4d3fbdc8f Optimistically untag the input in tagged-to-i.
Also drop redundant jmp instruction in deferred code.

R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/182723003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19698 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-07 08:36:13 +00:00
mvstanton@chromium.org
6115a006fd Bugfix for 349874: we incorrectly believe we saw a growing store
When we set an out of bounds array index, the index might be so large that
it causes the array to go to dictionary mode. It's better to avoid
"learning" that this was a growing store in that case.

This fix also partially reverts a fix for bug 347543, as this fix is
comprehensive and satisfies that repro case as well (partial revert of
v19591).

BUG=349874
LOG=N
R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/188643002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19691 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-06 13:07:51 +00:00
jarin@chromium.org
7ac668f753 Deoptimization fix for HPushArgument.
HPushArgument should never be used in a simulation environment
because the slot addresses for the arguments can be off (e.g.,
due to on-stack arguments object of an inlined caller).

R=mstarzinger@chromium.org
BUG=v8:3183
LOG=N

Review URL: https://codereview.chromium.org/178193026

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19675 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-05 12:45:46 +00:00
mstarzinger@chromium.org
9ab32061ed Print properly signed displacement in disassembler.
R=titzer@chromium.org
BUG=

Review URL: https://codereview.chromium.org/178193028

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19667 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-05 09:28:26 +00:00
mstarzinger@chromium.org
827adfe45a Print properly signed displacement in IA32 disassembler.
R=jkummerow@chromium.org
BUG=

Review URL: https://codereview.chromium.org/176993004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19652 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-04 13:07:00 +00:00
verwaest@chromium.org
9b8021ad29 Remove all uses of field-tracking flags that do not make decisions but are subject to existing information.
BUG=
R=ishell@chromium.org

Review URL: https://codereview.chromium.org/173963002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19650 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-04 12:48:17 +00:00
bmeurer@chromium.org
e16cc0acaf Push safepoint registers in deferred number-to-i/u only on-demand.
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/181053005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19649 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-04 12:45:00 +00:00
hpayer@chromium.org
b3ecfa32c2 Consolidate RecordWriteFromCode and RecordWriteForEvacuationFromCode.
BUG=
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/185233008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19639 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-03 13:27:59 +00:00
ulan@chromium.org
b9e0b87a5a Clear optimized code cache in shared function info when code gets deoptimized.
This adds a pointer to the shared function info into deoptimization data of an optimized code. Whenever the code is deoptimized, it clears the cache in the shared function info.

This fixes the problem when the optimized function dies in new space GC before the code is deoptimized due to code dependency and before the optimized code cache is cleared in old space GC (see mjsunit/regress/regress-343609.js).

This partially reverts r19603 because we need to be able to evict specific code from the optimized code cache.

BUG=343609
LOG=Y
TEST=mjsunit/regress/regress-343609.js
R=yangguo@chromium.org

Review URL: https://codereview.chromium.org/184923002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19635 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-03 11:11:39 +00:00
jkummerow@chromium.org
85367a7db9 Fail early when re-entering code that has been patched for lazy deopt
R=ulan@chromium.org

Review URL: https://codereview.chromium.org/184373004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19607 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-28 12:41:25 +00:00
mvstanton@chromium.org
df988c7f6b The Array function must be looked up in the native context.
Platforms x64, a64, arm and mips had the bug that the array function was looked
up in the global context instead of the native context. Fix this, restoring a
weakened assert in hydrogen along the way (by the fix for crbug 347528, which
helped find this case).

R=dcarney@chromium.org

Review URL: https://codereview.chromium.org/184383003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19597 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-28 10:39:36 +00:00
ishell@chromium.org
2ab83cf192 HAllocate should never generate allocation code if the requested size does not fit into page. Regression test included.
BUG=347543
LOG=N
R=hpayer@chromium.org

Review URL: https://codereview.chromium.org/180803005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19591 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-27 17:33:25 +00:00
jacob.bramley@arm.com
baf2614853 Remove the unused LoadInitialArrayMap.
BUG=
R=ulan@chromium.org

Review URL: https://codereview.chromium.org/173883003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19513 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-20 16:36:53 +00:00
ulan@chromium.org
db60894687 Clean up weak objects in optimized code.
This prepares for weak objects in IC stubs.

R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/172233003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19489 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-19 14:03:48 +00:00
mvstanton@chromium.org
73b679cbee Revert "Second attempt at introducing a premonomorphic state in the call"
This reverts commits r19463 and r19457 (includes MIPS port), there was a
Sunspider perf issue and on reflection we can achieve the necessary
result in a new way.

TBR=verwaest@chromium.org

Review URL: https://codereview.chromium.org/172383003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19488 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-19 13:55:25 +00:00
yangguo@chromium.org
139134acc2 Harmony: optimize Math.clz32.
R=svenpanne@chromium.org
BUG=v8:2938
LOG=N

Review URL: https://codereview.chromium.org/172133003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19487 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-19 13:51:49 +00:00
ulan@chromium.org
cf568ea0ed Do not emit receiver map in CheckPrototypes.
BUG=
R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/170613002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19471 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-19 09:24:44 +00:00
mvstanton@chromium.org
5224c3d0f0 Second attempt at introducing a premonomorphic state in the call
target caches.

This time we don't go through the premonomorphic state for
the Array call target caches to avoid losing information from
allocation sites that aren't only used once, but where the
resulting array is used heavily.

R=mvstanton@chromium.org

Review URL: https://codereview.chromium.org/169683003

Patch from Kasper Lund <kasperl@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19457 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-18 15:33:34 +00:00
jacob.bramley@arm.com
847aad8059 Pass a BailoutReason to Runtime::kAbort.
BUG=
R=rmcilroy@chromium.org, ulan@chromium.org

Review URL: https://codereview.chromium.org/168903004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19442 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-18 13:03:24 +00:00
svenpanne@chromium.org
dbce27047e Fixed and improved code for integral division. Fixed and extended tests.
Arithmetic right shifting is *not* division in two's complement
representation, only in one's complement. So we convert to one's
complement, shift, and go back to two's complement. By permutating the
last steps, one can get efficient branch-free code. This insight comes
from the paleozoic era of computer science, see the paper from 1976:

   Guy Lewis Steele Jr.: "Arithmetic Shifting Considered Harmful"
   ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-378.pdf

This results in better and more correct code than our previous
"neg/shift/neg" dance.

LOG=y
BUG=v8:3151
R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/166793002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19434 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-18 10:45:27 +00:00
mvstanton@chromium.org
8bcdbc354f Revert "Add a premonomorphic state to the call target cache."
This reverts commit r19402

R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/169713002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19412 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-17 14:22:18 +00:00
dcarney@chromium.org
127cafa846 Remove arch specific api callback generate functions
R=verwaest@chromium.org

BUG=

Review URL: https://codereview.chromium.org/169353002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19406 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-17 12:36:44 +00:00
mvstanton@chromium.org
be731e6c95 Add a premonomorphic state to the call target cache.
From a CL by kasperl: https://codereview.chromium.org/162903004/

R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/163413003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19402 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-17 11:59:45 +00:00
verwaest@chromium.org
ed9bbc7051 Remove HandlerKindField and just encode the handlerkind as the only extra-ic-state.
R=ishell@chromium.org

Review URL: https://codereview.chromium.org/166883002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19385 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-14 15:17:26 +00:00
verwaest@chromium.org
209b17ac31 Don't mix handler flags into regular flag computation.
BUG=
R=ishell@chromium.org

Review URL: https://codereview.chromium.org/163363003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19384 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-14 15:15:08 +00:00
dcarney@chromium.org
55599b395a build fix for r19380
R=mstarzinger@chromium.org

BUG=

Review URL: https://codereview.chromium.org/166483004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19381 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-14 14:48:20 +00:00
dcarney@chromium.org
0c844cc590 api accessor store ics should return passed value
R=verwaest@chromium.org

BUG=

Review URL: https://codereview.chromium.org/166653003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19380 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-14 14:13:06 +00:00
yangguo@chromium.org
68c7523e63 Fix assignment of function name constant.
If it's shadowed by a variable of the same name and both are forcibly
context-allocated, the function is assigned to the wrong context slot.

R=rossberg@chromium.org
BUG=v8:3138
LOG=Y

Review URL: https://codereview.chromium.org/159903008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19379 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-14 12:40:47 +00:00
vegorov@chromium.org
8f170a66e7 Improve positions tracking inside the HGraphBuilder.
Instead of tracking simple absolute offset from the start of the script like other places do, track a pair of (inlining id, offset from the start of inlined function).

This enables us to pinpoint with inlining path an instruction came from. Previously in multi-script environments we emitted positions that made very little sense because inside a single optimized function they would point to different scripts without a way to distinguish them.

Start dumping the source of every inlined function to make possible IR viewing tools with integrated source views as there was previously no way to acquire this information from IR dumps. We also dump source position at which each inlining occured.

Tracked positions are written into hydrogen.cfg as pos:<inlining-id>_<offset>.

Flag --emit-opt-code-positions is renamed by this change into --hydrogen-track-positions to better convey it's meaning.

In addition this change assigned global unique identifier to each optimization performed inside isolate. This allows to precisely match compilation artifacts (e.g. IR and disassembly) and deoptimizations.

BUG=
R=yangguo@chromium.org

Review URL: https://codereview.chromium.org/140683011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19360 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-13 16:09:28 +00:00
bmeurer@chromium.org
85856feaf7 Omit redundant smi checks in write barriers.
R=hpayer@chromium.org

Review URL: https://codereview.chromium.org/155843006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19323 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-12 12:36:53 +00:00
svenpanne@chromium.org
ad536f2afc Improved variable-related assembler comments in fullcode.
R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/157033012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19320 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-12 12:06:11 +00:00
mvstanton@chromium.org
1d88f09092 Cleanup: ContextualMode doesn't need to be passed to ICs.
R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/154113010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19277 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-11 12:41:58 +00:00
mvstanton@chromium.org
516ed9fa90 Adding a type vector to replace type cells.
R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/137403009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19244 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-10 21:38:17 +00:00
yangguo@chromium.org
db1a685b8f Revert "Fix inconsistencies wrt whitespaces."
This reverts r19196.

TBR=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/147443008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19199 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-07 14:13:00 +00:00
yangguo@chromium.org
d0f57e1195 Fix inconsistencies wrt whitespaces.
\u0085 (NEL) is now considered a whitespace in accordance to http://www.unicode.org/Public/6.3.0/ucd/PropList.txt

R=mstarzinger@chromium.org
BUG=v8:3109
LOG=Y

Review URL: https://codereview.chromium.org/146983007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19196 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-07 12:34:45 +00:00
dcarney@chromium.org
12039c97c6 swap in global proxy on accessors
R=verwaest@chromium.org

BUG=

Review URL: https://codereview.chromium.org/156623002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19142 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-06 10:50:07 +00:00
bmeurer@chromium.org
8150c34c82 Optimize redundant HCompareMap instructions with known successors.
R=ishell@chromium.org

Review URL: https://codereview.chromium.org/150663005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19094 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-05 09:30:53 +00:00
jkummerow@chromium.org
4058d90747 Cleanup: Unify CodeGenerator class across platforms
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/134643026

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19072 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-04 13:53:41 +00:00
dcarney@chromium.org
ef2ca4ac09 let load and store api callbacks use global proxy as receiver
R=verwaest@chromium.org

BUG=

Review URL: https://codereview.chromium.org/151063003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19033 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-03 15:19:38 +00:00
verwaest@chromium.org
ae7a209e71 Remove CallICs
BUG=
R=dcarney@chromium.org

Review URL: https://codereview.chromium.org/148223002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19001 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-31 16:52:17 +00:00
jochen@chromium.org
253edf246f Remove IsRegExpEquivalent.
It's not used anywhere.

BUG=none
R=ulan@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/141563013

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18995 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-31 14:17:02 +00:00
hpayer@chromium.org
dae054e7f0 Fix compiler error on MacOS, remove unused ParameterCount member in CallInterceptorCompiler.
BUG=
R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/132113004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18969 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-31 07:02:33 +00:00
verwaest@chromium.org
a9ba16dee3 Fix the context check in LoadGlobalFunctionPrototype
R=dcarney@chromium.org

Review URL: https://codereview.chromium.org/146303003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18958 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-30 17:45:09 +00:00
dcarney@chromium.org
5c589640bf crankshaft support for api method calls
R=verwaest@chromium.org

BUG=

Review URL: https://codereview.chromium.org/148333003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18946 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-30 13:18:41 +00:00
verwaest@chromium.org
b73101d539 Optimize HWrapReceiver
R=dcarney@chromium.org

Review URL: https://codereview.chromium.org/135593006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18945 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-30 12:52:49 +00:00
dcarney@chromium.org
a1f55c107f stub api getters
R=verwaest@chromium.org

BUG=

Review URL: https://codereview.chromium.org/150213003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18941 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-30 12:15:51 +00:00
ulan@chromium.org
979cd4b0f3 Disable tracking of double fields during snapshot creation.
Follow-up to r18298.

R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/101123004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18909 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-29 14:18:55 +00:00
bmeurer@chromium.org
4a0959e360 Replace HThrow with HCallRuntime.
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/131103021

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18908 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-29 14:03:32 +00:00
bmeurer@chromium.org
f80e76cd58 Remove the unused HElementsKind instruction.
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/136093004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18906 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-29 13:44:50 +00:00
bmeurer@chromium.org
87a3951c11 Remove the HValueOf instruction.
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/139233004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18905 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-29 13:41:00 +00:00
bmeurer@chromium.org
3ba2f104c9 Turn RegExpConstructResultStub into a HydrogenCodeStub.
This has the additional benefit that it is now possible to
inline the RegExpResult construction code into Hydrogen
builtins.

R=mvstanton@chromium.org

Review URL: https://codereview.chromium.org/141703018

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18902 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-29 13:10:35 +00:00
bmeurer@chromium.org
1e6606849a Don't create dummy uses for control dependencies.
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/149513002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18900 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-29 12:48:32 +00:00