Skip to content

Conversation

@Penguinwizzard
Copy link
Contributor

The unsigned compare peep optimization, after being changed to have
the bytecodeuses instruction emitted after the compare instead of before
it, had issues with lowering of code hidden behind a bailonnoprofile, in
that it would have conflicts on lifetimes due to the loss of atomicity
of the bytecodereg use and generation of the compare. This patch attempts
to restore that by aggregating the bytecodeuse information for a single
instruction into once place.

@msftclas
Copy link

Hi @Penguinwizzard, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!


It looks like you're a Microsoft contributor (Derek Morris). If you're full-time, we DON'T require a Contribution License Agreement. If you are a vendor, please DO sign the electronic Contribution License Agreement. It will take 2 minutes and there's no faxing! https://cla.microsoft.com.

TTYL, MSBOT;

@rajatd
Copy link
Contributor

rajatd commented Oct 4, 2016

@LouisLaf

@Penguinwizzard
Copy link
Contributor Author

@dotnet-bot test Ubuntu ubuntu_linux_release_static please
@dotnet-bot test Ubuntu ubuntu_linux_test_static please

byteCodeUsesInstr->byteCodeUpwardExposedUsed = nextinstr->byteCodeUpwardExposedUsed;
nextinstr->byteCodeUpwardExposedUsed = nullptr;
}
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not delete nextinstr at this point?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The code in RemoveCodeAfterNoFallthroughInstr has already referenced the next instruction by the time that we do this. Doing nextinstr->Remove() causes an access violation a couple frames up the call stack if you remove the instruction here.

The unsigned compare peep optimization, after being changed to have
the bytecodeuses instruction emitted after the compare instead of before
it, had issues with lowering of code hidden behind a bailonnoprofile, in
that it would have conflicts on lifetimes due to the loss of atomicity
of the bytecodereg use and generation of the compare. This patch attempts
to restore that by aggregating the bytecodeuse information for a single
instruction into once place.
@chakrabot chakrabot merged commit a6b59e6 into chakra-core:master Oct 11, 2016
chakrabot pushed a commit that referenced this pull request Oct 11, 2016
… dead code.

Merge pull request #1673 from Penguinwizzard:fg_fix

The unsigned compare peep optimization, after being changed to have
the bytecodeuses instruction emitted after the compare instead of before
it, had issues with lowering of code hidden behind a bailonnoprofile, in
that it would have conflicts on lifetimes due to the loss of atomicity
of the bytecodereg use and generation of the compare. This patch attempts
to restore that by aggregating the bytecodeuse information for a single
instruction into once place.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants