CpuProfiler: fix for CollectDeoptEvents test on arm64
authorloislo <loislo@chromium.org>
Tue, 10 Mar 2015 10:45:07 +0000 (03:45 -0700)
committerCommit bot <commit-bot@chromium.org>
Tue, 10 Mar 2015 10:45:21 +0000 (10:45 +0000)
commit82e6824eb725205ffaac925a55e628e5081c7bd7
treebcb031710c9cc601a7149ba033d8e14f6060e924
parent3ed5dea6f7de20054903733b5a316221ee99a9e5
CpuProfiler: fix for CollectDeoptEvents test on arm64

We use slightly different schema for JumpTable on arm64 than for x64.

We do a branch (B) to the JumpTable from the code,
then a branch (B) to the end of jump table code
and then branch to the deoptimizer code with putting
the return address into lr register (Call which is actually Blr).

As a result the 'from' address in Deoptimizer always points to
the end of JumpTable code and we can get nothing from this information.

0) I moved save_doubles and needs_frame code out of for_loop.

1) I replaced B commands with Bl so we put different return addresses
to lr register for the different jump table entries and replaced
the final Call with Br which do not touch lr register.

Also I removed the last_entry check so we will always do the Bl
even for the last entry because we need the right address in lr.
I don't think that this will affect the performance because it
just one more branch for entire deopt mechanics.

BUG=chromium:452067
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#27094}
src/arm64/lithium-codegen-arm64.cc
src/deoptimizer.h
test/cctest/test-cpu-profiler.cc