Closed Bug 1110939 Opened 7 years ago Closed 7 years ago

Allow recovering effectful instruction which are flagged as effectful.

Categories

(Core :: JavaScript Engine: JIT, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla37

People

(Reporter: nbp, Assigned: nbp)

References

Details

Attachments

(1 file)

This is a blocker for any optimization which is removing an allocation, such as MNewObject and also MLambda.  The fact that this does not remove the MLambda, as expected, cause issues in Bug 1073033 as we are creating a lambda function out of a non-initialized call object. (the enclosing scope is void instead of being an object).
This issue got introduce as part of Bug 1105187.  The DCE check did not
considered the effectful flag before the previous change.  In order to fix
the issue as it was detect in Bug 1105187, I've moved the test to filter out
move candidates.  This is even more critical for move candidates if we still
have the issue about potentially executing things twice after moving
instructions.
Attachment #8535756 - Flags: review?(jdemooij)
Comment on attachment 8535756 [details] [diff] [review]
Allow recovery of effectful instruction.

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

::: js/src/jit/Sink.cpp
@@ +107,5 @@
>              // uses to the bailout path.
>              if (!sinkEnabled)
>                  continue;
>  
> +            // To move effectful instruction, we would have to verify that the

Pre-existing nit: "effectful instructions" or "an effectful instruction"
Attachment #8535756 - Flags: review?(jdemooij) → review+
https://hg.mozilla.org/mozilla-central/rev/9cb1c9b8d65e
Status: ASSIGNED → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla37
You need to log in before you can comment on or make changes to this bug.