Bug 158317 - [iOS]: Some JSC stress tests fail running out of executable memory when the LLInt is disabled
Summary: [iOS]: Some JSC stress tests fail running out of executable memory when the L...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: WebKit Nightly Build
Hardware: iPhone / iPad All
: P2 Normal
Assignee: Michael Saboff
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2016-06-02 14:37 PDT by Michael Saboff
Modified: 2016-06-02 14:56 PDT (History)
4 users (show)

See Also:


Attachments
Patch (3.53 KB, patch)
2016-06-02 14:46 PDT, Michael Saboff
saam: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Michael Saboff 2016-06-02 14:37:40 PDT
Some of the stress tests need so much code alive that they run out of executable memory when the LLInt is disabled.  There were similar issues with the JS LayoutTests.  For these tests, we should not run the "noLLInt" variant.

The tests in question are
    ARM - stress/arrowfunction-lexical-bind-superproperty.js
    ARM & ARM64 - stress/proxy-revoke.js

<rdar://problem/26605951>
<rdar://problem/26605961>
Comment 1 Michael Saboff 2016-06-02 14:46:59 PDT
Created attachment 280370 [details]
Patch
Comment 2 Saam Barati 2016-06-02 14:49:38 PDT
Comment on attachment 280370 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=280370&action=review

> Tools/Scripts/run-jsc-stress-tests:937
> +    if $quickMode
> +        defaultQuickRun
> +    else
> +        runDefault
> +        runAlwaysTriggerCopyPhase
> +        if $jitTests
> +            runNoCJITValidatePhases
> +            runDFGEager
> +            runDFGEagerNoCJITValidate
> +            runDefaultFTL
> +            runFTLNoCJITValidate
> +            runFTLNoCJITNoPutStackValidate
> +            runFTLNoCJITNoInlineValidate
> +            runFTLEager
> +            runFTLEagerNoCJITValidate
> +            runFTLNoCJITSmallPool
> +            runDFGMaximalFlushPhase
> +        end
> +    end
> +end

I wish we had a way to just set some extra flags on every run so we don't have to copy defaultRun here.
Maybe we could add something like EXTRA_OPTIONS = [];
And here, you can set those options, and then set them back to empty after the run.
And each run() can add EXTRA_OPTIONS
Comment 3 Michael Saboff 2016-06-02 14:52:34 PDT
Committed r201618: <http://trac.webkit.org/changeset/201618>
Comment 4 Michael Saboff 2016-06-02 14:56:54 PDT
(In reply to comment #2)
> Comment on attachment 280370 [details]
> Patch
> 
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=280370&action=review
> 
> > Tools/Scripts/run-jsc-stress-tests:937
> > +    if $quickMode
> > +        defaultQuickRun
> > +    else
> > +        runDefault
> > +        runAlwaysTriggerCopyPhase
> > +        if $jitTests
> > +            runNoCJITValidatePhases
> > +            runDFGEager
> > +            runDFGEagerNoCJITValidate
> > +            runDefaultFTL
> > +            runFTLNoCJITValidate
> > +            runFTLNoCJITNoPutStackValidate
> > +            runFTLNoCJITNoInlineValidate
> > +            runFTLEager
> > +            runFTLEagerNoCJITValidate
> > +            runFTLNoCJITSmallPool
> > +            runDFGMaximalFlushPhase
> > +        end
> > +    end
> > +end
> 
> I wish we had a way to just set some extra flags on every run so we don't
> have to copy defaultRun here.
> Maybe we could add something like EXTRA_OPTIONS = [];
> And here, you can set those options, and then set them back to empty after
> the run.
> And each run() can add EXTRA_OPTIONS

I was thinking we could make a more general additive process.  defaultRun would run everything, but it would be composed of subgroups.  For cases like this, be just run the selected subgroups.