Yeah, I noticed that and wondered if it could lead to problems. I don't know enough about how the compiler works to know if it could. Personally, I would think it would likely be better to be consistent either way. But I'll let someone who knows more take this one.
On Sat, Jun 26, 2021 at 2:05 PM tapi...@gmail.com <tapir....@gmail.com> wrote: > I agree this is not a real problem in practice. It is just an aesthetics > problem. > No tests are broken if the consistency is made. > > BTW, in the function "walkStringToBytes", there is a comparison "len(sc) > <= int(ir.MaxImplicitStackVarSize)", > which is inconsistent with other uses of MaxImplicitStackVarSize. > > On Saturday, June 26, 2021 at 6:44:07 AM UTC-4 axel.wa...@googlemail.com > wrote: > >> Out of interest, I chased this down a bit using `git blame`. I think the >> code in its current form (more or less - some constants where introduced >> later and things where moved around a bit here and there) was introduced >> here: >> https://go-review.googlesource.com/c/go/+/10268/ >> It seems checks from multiple places where consolidated into one. One of >> these checks was `n.Type.Width > MaxStackVarSize` another was >> `!(n.Type.Type.Width < 1<<16`), which then got rewritten into >> `n.Type.Type.Width >= 1<<16` to avoid the negation, which eventually became >> the code you looked at. >> Before that commit, it's not clear to me where this specific condition >> was taken from. >> >> So, from what I can tell, it's an artifact of these two things being >> written by different people and then evolving over a long time into the >> same place via a sequence of semantics-preserving small refactorings. I >> don't think there is a technical reason they should be different but I also >> assume that it's not worth it to make them the same - it doesn't really >> matter if we move things to the heap one byte earlier or later, only the >> order of magnitude is important. >> >> But I might be wrong about all of this. I don't really understand the >> purpose of you diving so deep into the escape analysis behavior and then >> asking *extremely* detailed questions like this (though I am always curious >> to see if you could find the answer yourself, which is why I dove into the >> git history). ISTM if this causes a problem, the best way to address it >> would be to file a bug. And if it's just curiosity, you can always try and >> change it and see what breaks. Go has a lot of tests. >> >> On Sat, Jun 26, 2021 at 11:52 AM tapi...@gmail.com <tapi...@gmail.com> >> wrote: >> >>> Sorry, a typo in title. It should be "comparison". >>> >>> On Saturday, June 26, 2021 at 5:50:55 AM UTC-4 tapi...@gmail.com wrote: >>> >>>> >>>> The code: >>>> https://github.com/golang/go/blob/cca23a73733ff166722c69359f0bb45e12ccaa2b/src/cmd/compile/internal/escape/escape.go#L2012-L2025 >>>> >>>> xxx > ir.MaxStackVarSize >>>> >>>> xxx >= ir.MaxImplicitStackVarSize >>>> >>>> This leads to the elements of a slice with size as ir. >>>> MaxImplicitStackVarSize will be allocated on heap, but an array with >>>> size as ir.MaxStackVarSize will be allocated on stack. >>>> >>>> Is this intended? >>>> >>>> >>>> >>>> -- >>> You received this message because you are subscribed to the Google >>> Groups "golang-nuts" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to golang-nuts...@googlegroups.com. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/golang-nuts/d26fec6c-03ba-4ea2-aa03-4e47f0980660n%40googlegroups.com >>> <https://groups.google.com/d/msgid/golang-nuts/d26fec6c-03ba-4ea2-aa03-4e47f0980660n%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/b8490ef4-31f0-4239-8545-9b9f89e0633dn%40googlegroups.com > <https://groups.google.com/d/msgid/golang-nuts/b8490ef4-31f0-4239-8545-9b9f89e0633dn%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CAEkBMfH98qPPWaKj2J_ufO9GPzgOptZiFMu%3DusP11MkzStRGjw%40mail.gmail.com.