AIX: [Profiler] Ensure ticks in frameless bytecode handlers are interpreted frames.

Port 8e7945a691

Original Commit Message:

    Port 381a7f9e76

    Original Commit Message:

        On Arm/64 the last return address is stored in a link register instead of
        being pushed to the top-of-stack like on x64/ia32. Extend the support in the
        tick sampler to check for samples in a frameless bytecode handler with support
        for checking the link register if it exists instead of top-of-stack. In addition,
        make the x64/ia32 check more robust by ensuring we only apply the change if the
        pc is a bytecode handler and the top frame isn't a bytecode handler (stub) frame.

R=miladfar@ca.ibm.com, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=v8:9162
LOG=N

Change-Id: I52c40f8d4ba1bb10049410417d1e60f95315489d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1614791
Reviewed-by: Junliang Yan <jyan@ca.ibm.com>
Reviewed-by: Joran Siu <joransiu@ca.ibm.com>
Reviewed-by: Peter Marshall <petermarshall@chromium.org>
Commit-Queue: Junliang Yan <jyan@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#61605}
This commit is contained in:
Milad Farazmand 2019-05-16 14:24:12 -04:00 committed by Commit Bot
parent 663ebdb127
commit 8c0d9f919c

View File

@ -519,6 +519,7 @@ void SignalHandler::FillRegisterState(void* context, RegisterState* state) {
state->pc = reinterpret_cast<void*>(mcontext.jmp_context.iar);
state->sp = reinterpret_cast<void*>(mcontext.jmp_context.gpr[1]);
state->fp = reinterpret_cast<void*>(mcontext.jmp_context.gpr[31]);
state->lr = reinterpret_cast<void*>(mcontext.jmp_context.lr);
#endif // V8_OS_AIX
}