kavon / llvm-statepoint-utils Goto Github PK
View Code? Open in Web Editor NEWRuntime support for LLVM's GC Statepoints
License: MIT License
Runtime support for LLVM's GC Statepoints
License: MIT License
im trying to make a gc using this tool, but can't seem to get wailking the stack right. An example program would be great for this. I already looked at the test folder but it did not help me enough.
If this is out of scope of this project please ignore.
Sometimes, LLVM will re-materialize GC root that it has proven to be a constant (that is obviously not a pointer) instead of saving it to the stack frame. Thus, the "relocation" entry in the emitted stackmap data is a Constant and not an Indirect, which is a frame location:
LBB42_43: ## %else_cfgE935_1391E
movq %r8, 8(%rsp)
movq %r14, 16(%rsp)
movl $1, %edi # <<< this is a root
movl $1, %eax
movl $1, %r10d
movq %r8, %r12
callq _lp_cfgE30B_FD42
Ltmp153:
movl $1, %edi # <<< this is a root rematerialized.
movq 8(%rsp), %r10
movq 16(%rsp), %rcx
jmp LBB42_11
Of course, our hash table generator does not expect such things, and just puts a bogus offset in the table instead of crashing the program or warning.
** frame #1**
return address: 0x1000091ED
frame size: 56
num live ptrs: 3
ptr slot #0 { kind: base ptr, frame offset: 123456789 }
ptr slot #1 { kind: base ptr, frame offset: 16 }
ptr slot #2 { kind: base ptr, frame offset: 8 }
Hi @kavon,
First of all, I need to thank you for this great job.
I have started on working GC related things and currently I am trying to understand the LLVM GC framework support. When I read the LLVM docs pointed in readme, I found two terms statepoint
and safepoint
. Could you please explain me the difference between these two?
The header needs a compound linkage specification (extern "C" {..}
) wrapped around it.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.