Support for the Linux 'perf report' and 'perf annotate' tools.

In this change, the support comes in two flavours:

--perf_jit_prof - outputs the files in a new perf format that only works with a
patched perf tool (patch obtained from Stephane Eranian). Both 'perf report' and
'perf annotate' are supported (the file format also contains the machine code).

--perf_basic_prof - outputs the files in a format that the existing perf tool
can consume. Only 'perf report' is supported.

In both cases, we have to disable code compaction because the perf tool does not
understand code relocation. (We are told that code relocation should be
supported soon.)

Usage:

perf record -g d8 --perf_jit_prof --no_compact_code_space my.js
perf report

The change itself is straightforward - we simply listen to code events and
write an entry to a log file for every new piece of code.

I am not yet sure whether we should keep both versions or just one (and which
one). My hope is the reviewers can help here.

R=danno@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@18034 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
freebsd: unbreak build after r16646

R=bmeurer@chromium.org

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

Patch from Ben Noordhuis <ben@strongloop.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@18035 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
Unbreak console=readline.

R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@18037 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
Prepare push to trunk.  Now working on version 3.23.12.

R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@18040 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
Fixed printer for JSFunction.

R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@18044 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
Enable global load elimination.

BUG=
R=hpayer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@18045 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
A performance regression in array literal creation was caused by refactoring that eliminated a special fast case for shallow arrays. At the same time the general case got a bit slower. This CL restores most of the performance without coding the special fast case. The virtual dispatching is unnecessary because we know what we want to do at compile time. A flag was added to Runtime::CreateArrayLiteral. The flags delivers information about shallowness but also whether or not allocation mementos should be created. This is useful for crankshafted code.

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

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@18046 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
Force inline Math.random.

R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@18047 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
Add -R option to merge-to-branch script to revert from bleeding_edge.

Usage:
tools/merge-to-branch.sh -R 12345 12346

R=machenbach@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@18048 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
Fix failing test test-api/CheckCOWArraysCreatedRuntimeCounter

R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@18051 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
Merge remote-tracking branch 'upstream/bleeding_edge' into bleeding_edge