Fix optimisations with compileExprIndexExpr #1135
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently in Luau 0.607's
compileExprIndexExpr
:always returns nil, meaning the conditions that generate
LOP_GETTABLEN
andLOP_GETTABLEKS
for string/number indexes are both unreachable, this has been fixed in this PR.LOP_GETIMPORT can also now be generated for string indexes if optimisations are enabled.
Comparisons
Test 1 (unreachable string/number branches in
compileExprIndexExpr
)Repro code:
Luau 0.607 with no optimisations
![image](https://private-user-images.githubusercontent.com/48674805/292630701-6808b5d5-f67d-47e7-961e-292a43acb100.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAzNDA2MDMsIm5iZiI6MTcyMDM0MDMwMywicGF0aCI6Ii80ODY3NDgwNS8yOTI2MzA3MDEtNjgwOGI1ZDUtZjY3ZC00N2U3LTk2MWUtMjkyYTQzYWNiMTAwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzA3VDA4MTgyM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTNkNjYyZTFiZGUxOTVlMTljNzg1MjE3YmI0ZGNmYTE0YmYwZGE0ODNhZjQ4MDhmMmM2YjQ3YzIxNWEyMGFmMGEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.5bWapx04ZobxyzOk9H5-2kE6gbvihxjBYu4WKP5CAx8)
![image](https://private-user-images.githubusercontent.com/48674805/292630740-4f8c1a39-5b51-4180-b020-7aef2c172408.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAzNDA2MDMsIm5iZiI6MTcyMDM0MDMwMywicGF0aCI6Ii80ODY3NDgwNS8yOTI2MzA3NDAtNGY4YzFhMzktNWI1MS00MTgwLWIwMjAtN2FlZjJjMTcyNDA4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzA3VDA4MTgyM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWNkNTg1MDk0NDJlMDQ0YzY1YzJmMzYzNzJjMjEwZTkzZGVjZTJkNDQwMWJkMzJkMjY3MjE2MjdmYmNjZTM0MjAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.jyWL1ifEwcefHxIQXaxQRgBkfy0zd6b4AGUsZam0e24)
(output from luau.lonegladiator.dev, same output as luau-compile util):
PR with no optimisations:
Test 2 (LOP_GETIMPORT for
compileExprIndexExpr
)Repro code:
Luau 0.607 with -O1 and -O2:
![image](https://private-user-images.githubusercontent.com/48674805/292630872-1e1cff70-d56a-4b01-a6b1-edb9300c646c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAzNDA2MDMsIm5iZiI6MTcyMDM0MDMwMywicGF0aCI6Ii80ODY3NDgwNS8yOTI2MzA4NzItMWUxY2ZmNzAtZDU2YS00YjAxLWE2YjEtZWRiOTMwMGM2NDZjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzA3VDA4MTgyM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTg3NTk3MjhkNTg5YWIxYmZjMWJmNTIyYzg2Nzc4OTdjMDUwZTE3MzE0MDRlZDQ3MjRiMDc5NWY5OWMxNDY5YTYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Y4zEq9YSPxJ-f_YfTqyQ1lR_YoZgtkrzAk53aWy34cU)
![image](https://private-user-images.githubusercontent.com/48674805/292630894-00ae8993-3b66-4b10-9647-b1c55587c585.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAzNDA2MDMsIm5iZiI6MTcyMDM0MDMwMywicGF0aCI6Ii80ODY3NDgwNS8yOTI2MzA4OTQtMDBhZTg5OTMtM2I2Ni00YjEwLTk2NDctYjFjNTU1ODdjNTg1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzA3VDA4MTgyM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTIzN2E0OTc4OTM5YWNmNmU1NDY2M2Y4NzBiMjdkMjEzMDg0MGE0YjA4OTM1NTNjNWJkM2VmM2ViZTg5ZGE4N2ImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.SX8kwI16duCcS5YNmG2VAS6g_npOsn8-x1fc-3pnjD4)
PR with -O1 and -O2: