[Webkit-unassigned] [Bug 153626] New: Web Inspector: Possible unexpected tail call optimization issue, sourceURL lost from eval() source

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Jan 28 17:31:30 PST 2016


https://bugs.webkit.org/show_bug.cgi?id=153626

            Bug ID: 153626
           Summary: Web Inspector: Possible unexpected tail call
                    optimization issue, sourceURL lost from eval() source
    Classification: Unclassified
           Product: WebKit
           Version: WebKit Nightly Build
          Hardware: All
                OS: All
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: JavaScriptCore
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: joepeck at webkit.org
                CC: ggaren at apple.com, msaboff at apple.com, sbarati at apple.com

* SUMMARY
Possible unexpected tail call optimization issue, sourceURL lost from eval() source

* STEPS TO REPRODUCE
1. Attach the attached patch containing (LayoutTests/inspector/sampling-profiler/eval-source-url-2.html)
2. shell> run-webkit-tests LayoutTests/inspector/sampling-profiler/eval-source-url-2.html
  => FAIL

* NOTES
- Compare inspector/sampling-profiler/eval-source-url-2.html to inspector/sampling-profiler/eval-source-url.html
- The only difference is bar():

inspector/sampling-profiler/eval-source-url-2.html:
> function bar() {
>     for (let i = 0; i < 2; i++)
>         eval("//# sourceURL=eval.js\nfoo();");
> }

inspector/sampling-profiler/eval-source-url.html:
> function bar() {
>     eval("//# sourceURL=eval.js\nfoo();");
> }

For some reason, the Sampling Profiler doesn't see the "eval.js" sourceURL for the eval executable.

This showed up after no longer enabling the legacy profiling. One of the things that did was flip this bit:

    bytecompiler/BytecodeGenerator.cpp
    // FIXME: We should be able to have tail call elimination with the profiler
    // enabled. This is currently not possible because the profiler expects
    // op_will_call / op_did_call pairs before and after a call, which are not
    // compatible with tail calls (we have no way of emitting op_did_call).
    // https://bugs.webkit.org/show_bug.cgi?id=148819
    , m_inTailPosition(Options::useTailCalls() && !isConstructor() && constructorKind() == ConstructorKind::None && isStrictMode() && !m_shouldEmitProfileHooks)

Toggling that did in fact make the test pass again.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.webkit.org/pipermail/webkit-unassigned/attachments/20160129/7e24b022/attachment-0001.html>


More information about the webkit-unassigned mailing list