Assertion failure: !analysisContext->isExceptionPending(), at jit/IonBuilder.cpp:3868

RESOLVED FIXED in mozilla28

Status

()

Core
JavaScript Engine: JIT
RESOLVED FIXED
4 years ago
4 years ago

People

(Reporter: jandem, Assigned: jandem)

Tracking

(Blocks: 1 bug)

unspecified
mozilla28
Points:
---
Bug Flags:
in-testsuite +

Firefox Tracking Flags

(Not tracked)

Details

Attachments

(1 attachment, 1 obsolete attachment)

(Assignee)

Description

4 years ago
Created attachment 8341797 [details] [diff] [review]
Patch

decoder reported this on IRC. The problem was that the call to getOrCreateScript in IonBuilder was not propagating an error.

This patch refactors the inlining code a bit so that this is handled correctly.

This may fix intermittent orange bug 939714 and/or bug 923614.
Attachment #8341797 - Flags: review?(hv1989)
(Assignee)

Comment 1

4 years ago
Created attachment 8341804 [details] [diff] [review]
Patch

Forgot to add the testcase.
Attachment #8341797 - Attachment is obsolete: true
Attachment #8341797 - Flags: review?(hv1989)
Attachment #8341804 - Flags: review?(hv1989)
Blocks: 676763
Comment on attachment 8341804 [details] [diff] [review]
Patch

Review of attachment 8341804 [details] [diff] [review]:
-----------------------------------------------------------------

Nice. We indeed need to have some error propagation there.
Though I have a few comments:

1) Why don't we reuse InliningStatus, instead of adding InliningDecision. I don't see any reason not to. They both have the same 3 values (error, inlined, notInlined). No need for this extra enum. Though I wouldn't be mad if we decided to rename InliningStatus to InliningDecision ;)

2) IonBuilder::DontInline should be IonBuilder::dontInline(targetScript, const char *reason). Lowercase.

Looks much cleaner with the dontInline spewing ;)

Ps: did you have to do this before optimizationLevels landed :P
Attachment #8341804 - Flags: review?(hv1989) → review+
(Assignee)

Comment 3

4 years ago
https://hg.mozilla.org/integration/mozilla-inbound/rev/48b19f9cc967

(In reply to Hannes Verschore [:h4writer] from comment #2)
> 1) Why don't we reuse InliningStatus, instead of adding InliningDecision.

Discussed this on IRC - it felt wrong to use "InliningStatus_Inlined" when we are not sure we are going to inline..

> 
> 2) IonBuilder::DontInline should be IonBuilder::dontInline(targetScript,
> const char *reason). Lowercase.

It's a static method so it has to be uppercase - see also MBasicBlock::New, IonBuilder::TableSwitch, etc.

> Ps: did you have to do this before optimizationLevels landed :P

Sorry! For some reason we're touching the same code lately :(
https://hg.mozilla.org/mozilla-central/rev/48b19f9cc967
Status: ASSIGNED → RESOLVED
Last Resolved: 4 years ago
Flags: in-testsuite+
Resolution: --- → FIXED
Target Milestone: --- → mozilla28
You need to log in before you can comment on or make changes to this bug.