Commit Graph

3499 Commits

Author SHA1 Message Date
dslomov@chromium.org
9b74675e0d Check string literals with escapes in PreParserTraits::GetSymbol()
LOG=Y
BUG=v8:3606
R=arv@chromium.org, marja@chromium.org

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

Patch from Caitlin Potter <caitpotter88@gmail.com>.

Cr-Commit-Position: refs/heads/master@{#24880}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24880 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-24 15:02:41 +00:00
titzer@chromium.org
21013d2641 Fix bugs in Scheduler hoisting and RPO loop bounds computations.
R=mstarzinger@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#24877}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24877 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-24 13:57:39 +00:00
mstarzinger@chromium.org
a9a7979e9e Add Schedule::InsertBranch to fuse control flow graphs.
R=jarin@chromium.org
TEST=cctest/test-schedule/TestScheduleInsertBranch

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

Cr-Commit-Position: refs/heads/master@{#24876}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24876 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-24 13:48:18 +00:00
yangguo@chromium.org
0e1124842a Tweaks to the code serializer.
- consider the source string as a special sort of back reference.
- use repeat op code for more root members.

R=mvstanton@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#24871}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24871 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-24 13:12:09 +00:00
yangguo@chromium.org
e6ac285bd3 Log code event for deserialized code.
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24861 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-24 08:37:03 +00:00
yangguo@chromium.org
518ddc9317 Make block writes in the serializer more efficient.
And also fix a OOB read in SerializeExternalString.

R=vogelheim@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24858 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-24 07:29:39 +00:00
verwaest@chromium.org
8189922e1e Limit the number of transitions allowed per hidden class.
Each time a transition is added to a hidden class, the whole
transitions array must be copied, which causes poor performance
in some circumstances.  This change limits the maximum size of
the transition array, avoiding this behavior in the pathological
case.  For example, this improves the performance of the EtchMark
benchmark by nearly 60%.

BUG=v8:3616
LOG=
R=verwaest@chromium.org, svenpanne@chromium.org

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

Patch from Kevin M. McCormick <mckev@amazon.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24857 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-24 05:29:54 +00:00
jarin@chromium.org
c7685a59f0 [turbofan] Use range types to type and lower arithmetic ops.
This is based on Georg's work on typing arithmetic operations (https://codereview.chromium.org/658743002/).

Instead of weakening to bitset types, we weaken to the closest 2^n
limit if we see that we are re-typing a node with a range type (which
means that the node can be part of a cycle, so we might need
to speed up the fixpoint there).

BUG=
R=rossberg@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24848 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-23 14:40:43 +00:00
dslomov@chromium.org
96105a90fc harmony-scoping: Allow 'const' iteration variables in strict mode.
R=rossberg@chromium.org
BUG=v8:2506
LOG=N

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

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24842 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-23 12:30:20 +00:00
dslomov@chromium.org
707ed29a51 Revert "harmony-scoping: Allow 'const' iteration variables in strict mode."
This reverts commit r24834 for breaking debug tests.

TBR=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24839 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-23 11:55:19 +00:00
yangguo@chromium.org
aaa104c8da De-virtualize snapshot sink.
R=vogelheim@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24836 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-23 11:23:57 +00:00
dslomov@chromium.org
b54f7d3c46 harmony-scoping: Allow 'const' iteration variables in strict mode.
R=rossberg@chromium.org
BUG=v8:2506
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24834 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-23 11:18:50 +00:00
bmeurer@chromium.org
80836787a3 [turbofan] Improve code generation for inline comparisons with zero.
TEST=cctest,unittests
R=dcarney@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24832 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-23 10:22:06 +00:00
dcarney@chromium.org
887b3ca079 Cleanup ConsStringIteratorOp.
R=yangguo@chromium.org

BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24818 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-23 05:57:01 +00:00
titzer@chromium.org
5a1774268a Add Terminate operator.
Terminate is need for non-terminating loops (NTLs) that can appear after optimizing control flow. It gathers the control and effect(s) from a NTL and connects them to end so that they are not dead-code removed.

R=mstarzinger@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24812 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-22 17:15:38 +00:00
bmeurer@chromium.org
6619a7975d [turbofan] Add support for deferred code.
Branch can now have an optional hint, when the condition is
likely true or false, and if such a hint is present the other
basic block will be marked as deferred and placed at the end
of the function.

We currently use this feature for tagging int32/uint32 in
change lowering, and for load/store bounds checks in simplified
lowering.

TEST=cctest,unittests
R=dcarney@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24802 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-22 11:24:55 +00:00
sigurds@chromium.org
81420f003b Add FRINTP (round towards positive infinity) instruction.
Macro Assember, assembler and simulator for ARM64 were missing FRINTP.

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

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24800 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-22 11:06:22 +00:00
jochen@chromium.org
4669a5cfb9 Really disable test when running with optimize for size
R=bmeurer@chromium.org
TBR=bmeurer@chromium.org
LOG=n
BUG=none

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24795 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-22 08:15:47 +00:00
jochen@chromium.org
b57976051b Fix newly added test to not run with optimize-for-size
TBR=ulan@chromium.org
BUG=none
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24792 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-22 07:36:12 +00:00
jochen@chromium.org
8f7a455fe2 Add support for a target new space size
When this flag is set, we will commit additional pages up until the
target size before doing a scavenge.

I made sure that all tests pass when a target size of 16MB is set.

BUG=v8:3626
R=ulan@chromium.org
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24790 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-22 06:58:38 +00:00
dslomov@chromium.org
37bd114925 Update ObjectToString to Harmony-draft algorithm
Updates Object.prototype.toString() to use algorithm described in harmony drafts.

Currently, the behaviour is essentially the same as ES262's version, however this changes when internal structures
such as Promise make use of symbolToStringTag (as they are supposed to, see v8:3241), and changes further once
Symbol.toStringTag is exposed publicly.

BUG=v8:3241, v8:3502
LOG=N
R=dslomov@chromium.org

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

Patch from Caitlin Potter <caitpotter88@gmail.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24783 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-21 17:21:32 +00:00
dcarney@chromium.org
1c5fafe890 [turbofan] use ZonePool in most places in the compiler pipeline a temp zone is used.
R=jarin@chromium.org, bmeurer@chromium.org

BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24779 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-21 14:44:50 +00:00
titzer@chromium.org
12a82ef32c Fix AstGraphBuilder for loops like for(;;).
R=mstarzinger@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24777 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-21 14:17:08 +00:00
dcarney@chromium.org
54fef44df3 [turbofan] add ZonePool to correctly track compiler phase memory usage
R=bmeurer@chromium.org

BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24771 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-21 12:38:46 +00:00
wingo@igalia.com
4eddbacabf Assign bailout and type feedback IDs in a post-pass
This will allow us to move expressions from one function to another, for
example when the parser determines that a given cover grammar instance
is actually the default value initializer for an arrow function.

This is a re-land of https://codereview.chromium.org/636403003/ with a
fix for the arm64 code generator.

R=svenpanne@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24769 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-21 12:16:37 +00:00
svenpanne@chromium.org
d66d302b00 Revert "Assign bailout and type feedback IDs in a post-pass"
This reverts r24757, which breaks the ARM64 simulator build.
Simple repro:

   out/arm64.debug/d8 -e 'eval("(function(){ const x; var x; })")'

TBR=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24762 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-21 10:55:12 +00:00
ulan@chromium.org
e777fc4126 Use smi zero instead of undefine_value to zap dead weak cells.
It is faster to test for smi zero from generated code.

BUG=
R=erikcorry@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24758 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-21 09:42:16 +00:00
svenpanne@chromium.org
2b8d734037 Assign bailout and type feedback IDs in a post-pass
This will allow us to move expressions from one function to another, for
example when the parser determines that a given cover grammar instance
is actually the default value initializer for an arrow function.

R=svenpanne@chromium.org, marja@chromium.org
BUG=

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

Patch from Andy Wingo <wingo@igalia.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24757 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-21 08:52:32 +00:00
svenpanne@chromium.org
3de17c6950 Remove v8stdint.h, it doesn't serve a purpose anymore.
Basically a follow-up to https://codereview.chromium.org/667573005/.

LOG=y
R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24755 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-21 08:25:14 +00:00
dcarney@chromium.org
6c1e4f08d1 [turbofan] cleanup InstructionSequence
R=bmeurer@chromium.org

BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24753 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-21 06:59:50 +00:00
mvstanton@chromium.org
8a54a9a4f0 Fix gc mole test failure.
TBR=ulan@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24745 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-20 17:32:06 +00:00
yangguo@chromium.org
b1d4bf4158 Move some Runtime:: functions and remove runtime.h as include when unnecessary.
R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24736 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-20 12:07:45 +00:00
bmeurer@chromium.org
010f089971 Remove (untested) code for unsupported compilers.
R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24735 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-20 12:04:22 +00:00
mvstanton@chromium.org
c688ebd858 vector-based ICs did not update type feedback counts correctly.
BUG=v8:3605
LOG=N
R=jkummerow@chromium.org, ulan@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24732 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-20 11:42:56 +00:00
dcarney@chromium.org
32161089da [turbofan] pass zone to InstructionSequence
R=bmeurer@chromium.org

BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24728 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-20 11:18:07 +00:00
dcarney@chromium.org
4e191e782e [turbofan] remove schedule from InstructionSequence
R=bmeurer@chromium.org

BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24726 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-20 10:19:15 +00:00
marja@chromium.org
394af55a8c Script streaming: more UTF-8 handing fixes (again).
1) Since we fill the output buffer both from the chunks and the conversion
buffer, it's possible that we run out of space and call CopyCharsHelper with 0
length. The underlying functions don't handle it gracefully, so check there.

2) There was a bug where we used to try to copy too many characters from the
beginning of the data chunk into the conversion buffer. Continuation bytes in
UTF-8 are of the form 0b10XXXXXX. If a byte is bigger than that, it's the first
byte of a new UTF-8 character and we should ignore it.

These two together (or maybe in combination with surrogates) are a probable
reason for crbug.com/420932.

3) The test data was off; \uc481 is \xec\x92\x81.

BUG=420932
LOG=N
R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24725 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-20 09:23:43 +00:00
sigurds@chromium.org
bc475b4a6b Add inlining for intrinsics.
This issue is for discussion on how to proceed.

I think the implementation of ValueOf shows that directly creating the IR does not scale.

BUG=
R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24719 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-20 07:56:50 +00:00
jkummerow@chromium.org
c186399e5f Tick processor: Print C++ entry points
R=loislo@chromium.org, yangguo@chromium.org, yurys@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24700 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 15:44:02 +00:00
titzer@chromium.org
e4c6f9488e Implement graph trimming in ControlReducer.
Trimming the graph consists of breaking links from nodes that are not reachable from end to nodes that are reachable from end. Such dead nodes show up in the use lists of the live nodes and though mostly harmless, just clutter up the graph. They also can limit instruction selection opportunities, so it is good to get rid of them.

This CL is one half of the ControlReducer functionality, the other half
being branch folding.

R=bmeurer@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24694 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 11:51:57 +00:00
neis@chromium.org
7f7354f3fd Test monotonicity of expression typings.
R=rossberg@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24693 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 11:46:06 +00:00
yangguo@chromium.org
66170eaa52 test-serialize/Bug3628 is expected to fail, not crash.
TBR=jochen@chromium.org
BUG=v8:3628
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24688 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 10:22:47 +00:00
yangguo@chromium.org
f0e3ae8e24 Prohibit serializing with --harmony-scoping.
R=jochen@chromium.org
BUG=v8:3628
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24686 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 09:54:48 +00:00
bmeurer@chromium.org
0854ee289b [x64] simply tweak materialization of float/double constants
port 24485
Fixed a bug of "psllq" instruction in x64

R=bmeurer@chromium.org

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

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24673 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 04:18:38 +00:00
haraken@chromium.org
f3bfd04bcf Pass an Isolate to v8::VisitHandlesWithClassIds
The Isolate version of v8::VisitHandlesWithClassIds is needed
for https://codereview.chromium.org/651713002/

R=dcarney@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24671 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 00:46:18 +00:00
mvstanton@chromium.org
e8c3708825 Fix ASAN warning.
Missing line in a test to dispose of a string.

TBR=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24665 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-16 13:26:28 +00:00
wingo@igalia.com
0841f7241b Track usage of "this" and "arguments" in Scope
This adds flags in Scope to track wheter a Scope uses "this" and,
"arguments". The information is exposed via Scope::uses_this(),
and Scope::uses_arguments(), respectively. Flags for tracking
usage on any inner scope uses are available as well via
Scope::inner_uses_this(), and Scope::inner_uses_arguments().

Knowing whether scopes use "this" and "arguments" will be handy
to generate the code needed to capture their values when generating
the code for arrow functions.

BUG=v8:2700
LOG=
R=rossberg@chromium.org

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

Patch from Adrian Perez de Castro <aperez@igalia.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24663 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-16 13:19:36 +00:00
bmeurer@chromium.org
fe3a8845f0 [turbofan] Correctify typed lowering.
We cannot add new JSToNumber nodes here in general, because:

 a) The inserted ToNumber operation screws up observability of valueOf.
 b) Deoptimization at ToNumber doesn't have corresponding bailout id.

TEST=cctest,mjsunit
R=jarin@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24660 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-16 11:31:00 +00:00
aandrey@chromium.org
b96b570628 Introduce v8::Exception::GetStackTrace API method.
This will be needed to get a stack trace from a DOMException.

API=v8::Exception::GetStackTrace
R=yangguo@chromium.org
LOG=Y

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24655 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-16 10:42:08 +00:00
sigurds@chromium.org
2577d6c261 Fix compilation after r24639
TBR=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24643 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 14:42:32 +00:00