Make LdClsCns not CSE-able
If you load the same class constant multiple times in a tracelet, this will extend the lifetime of the LdClsCns, and reuse it at sites past the CheckInit guard. It can generate incorrect code if the LdClsCns has a type more specialized than Cell (because if the unlikely branch happens, later code will reuse the uninit value that was loaded), and if the type is less specialized it keeps two GPRs live longer than probably makes sense.
Esse commit está contido em:
@@ -290,7 +290,7 @@ O(LdClsCached, D(Cls), CStr, C|E|N|Refs|Er|Mem) \
|
||||
O(LdClsCachedSafe, D(Cls), CStr, C) \
|
||||
O(LdClsCtx, D(Cls), S(Ctx), C) \
|
||||
O(LdClsCctx, D(Cls), S(Cctx), C) \
|
||||
O(LdClsCns, DParam, CStr CStr, C) \
|
||||
O(LdClsCns, DParam, CStr CStr, NF) \
|
||||
O(LookupClsCns, DParam, CStr CStr, E|Refs|Er|N|Mem) \
|
||||
O(LdCns, DParam, CStr, NF) \
|
||||
O(LookupCns, DParam, CStr, E|Refs|Er|N|Mem) \
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário