freenode/#sbcl - IRC Chatlog
Search
15:00:32
stassats
huh, alloc-tramp doesn't save YMM registers, that's why i'm seeing very rare failures there
15:17:58
flip214
I did some automated tests once by telling GDB to debug the process and inject faults at a breakpoint
16:35:40
stassats
and there's no separate avx storage base, just float-regs, so how do I know that 256-bit registers are used
18:12:12
stassats
canonicalize-inline-constant is using avx2 registers, now i can't save its registers on non-avx2 harware
18:37:35
stassats
but if xsaveopt is faster and can be patched into alloc-tramp, then that may be a better option even when no avx2 registers are used
19:25:22
stassats
ok, things are complicate, i might just add ALLOC-UNSIGNED-BIGNUM-IN-AVX2 and split optionally using avx register functions and call it a day
21:18:00
pfdietz32
Xach: the only portable way I can think of is to instrument defstruct via the macroexpand hook, so you can infer and record which functions are created.
22:06:47
Xach
pfdietz32: i don't care much about portability, sbcl-only would be great. i'm not seeing it.
23:59:39
jackdaniel
Xach: if you know the exact structure and you are looking only for slot readers, you could go with (sb-kernel:layout-slot-table (sb-kernel:find-layout 'foo)) and check for reader/writer functions if they match yours
0:03:34
jackdaniel
also, if you feel adventurous you should access the code-component (i.e via inspector) of the function, and if it is a function defined by defstruct, the layout will be in its constants
0:04:17
jackdaniel
so I suppose the way to go would be: access code component of the function and if there is a layout then try to access it and match with constructor and layout-slot-table functions