Size: a a a

Compiler Development

2020 February 20

E

EgorBo in Compiler Development
K R
То есть, выделяя переменную на стеке, мы всё равно уведомляем о ней gc?
если у переменной нет гцхендлов то нет
источник

E

EgorBo in Compiler Development
если это просто жирная структура с вложенными структурами но все без гц - тогда просто на стек :)
источник

AT

Alexander Tchitchigin in Compiler Development
Вопрос же был про указатели - если они указывают на стек, то при реаллокации стека их нужно обновить.
источник

AT

Alexander Tchitchigin in Compiler Development
С другой стороны, можно и не обновлять, если старый стек не удалять. 😊
источник

AT

Alexander Tchitchigin in Compiler Development
Но про указатели рантайм/GC всё равно всё знает.
источник

E

EgorBo in Compiler Development
про указатель на стек?
источник

E

EgorBo in Compiler Development
лучше разделять на ссылки и указатели :)
источник

AT

Alexander Tchitchigin in Compiler Development
Не уверен, что в Go есть ссылки/разница. 😊
источник

МБ

Михаил Бахтерев in Compiler Development
K R
То есть, выделяя переменную на стеке, мы всё равно уведомляем о ней gc?
Если она убегает из стека, она а выделяется в куче, а на стек кладётся просто указатель. Это решается статически.


Сценариев может быть много у Go. Например, переменная убегает, но стек маленький и не растёт. Тогда переменная остаётся на стеке. Много случаев. Лучше всегда смотреть 6g -m, чтобы понимать, какие идеи возникают у компилятора
источник

E

EgorBo in Compiler Development
Alexander Tchitchigin
Не уверен, что в Go есть ссылки/разница. 😊
MyStruct myStruct = new MyStruct();
int* ptr = (int*)&myStruct.field1;

никто за птр следить не будет - указатель :) (C#)
источник

А

Алексей in Compiler Development
Михаил Бахтерев
Если она убегает из стека, она а выделяется в куче, а на стек кладётся просто указатель. Это решается статически.


Сценариев может быть много у Go. Например, переменная убегает, но стек маленький и не растёт. Тогда переменная остаётся на стеке. Много случаев. Лучше всегда смотреть 6g -m, чтобы понимать, какие идеи возникают у компилятора
6g это старый go tool compile?
источник

E

EgorBo in Compiler Development
хотя в дотнете есть по сути третий тип указателей - спаны, C# их физически не даст засунуть в кучу, не скопилируется
источник

А

Алексей in Compiler Development
Типа лайфтайм - скоуп метода?
источник

А

Алексей in Compiler Development
http://gchandbook.org/ - это старьё или ок мб кто читал?
источник

МБ

Михаил Бахтерев in Compiler Development
Алексей
6g это старый go tool compile?
Ага
источник

EM

Evgenii Moiseenko in Compiler Development
Алексей
http://gchandbook.org/ - это старьё или ок мб кто читал?
это классика
источник

А

Алексей in Compiler Development
Evgenii Moiseenko
это классика
👍 начну с неё
источник
2020 February 21

M

MaxGraey in Compiler Development
Dmitry Ponyatov
legacy код большая проблема, особенно в командах в которых нет культуры разработки
вот такие тулзы в комплекте с language server и отладчиком необходимы
https://www.youtube.com/watch?v=649qbIkBd-I
источник

N

Nikolay in Compiler Development
А в чем смысл такого трюка: INTEGER Mapped to java.lang.Integer. The binary representation is a 4 byte integer with the sign bit flipped (so that negative values sorts before positive values). Вроде как и так можно сравнивать 4 байтные числа в 2 комплимент представлении одной инструкцией ?
источник

AT

Alexander Tchitchigin in Compiler Development
Nikolay
А в чем смысл такого трюка: INTEGER Mapped to java.lang.Integer. The binary representation is a 4 byte integer with the sign bit flipped (so that negative values sorts before positive values). Вроде как и так можно сравнивать 4 байтные числа в 2 комплимент представлении одной инструкцией ?
Возможно, если бы Вы описали контекст этого "трюка", догадаться было бы проще. 😉
источник