Giter Site home page Giter Site logo

kavon / llvm-statepoint-utils Goto Github PK

View Code? Open in Web Editor NEW
42.0 4.0 6.0 60 KB

Runtime support for LLVM's GC Statepoints

License: MIT License

Makefile 5.72% C 71.12% LLVM 20.78% Assembly 0.31% sed 1.10% Shell 0.97%
llvm garbage-collector statepoint garbage-collection runtime-system

llvm-statepoint-utils's Issues

Asking the difference between the statepoint and safepoint

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?

Non-indirect locations end up as bogus stack frame offsets.

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 }

C++ support

The header needs a compound linkage specification (extern "C" {..}) wrapped around it.

example program

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.