llvm.org GIT mirror llvm / 1df4f75
gcroot must take concrete types, not arbitrary types. clean up intrinsic descriptions in langref a bit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42194 91177308-0d34-0410-b5e6-96231b3b80d8 Chris Lattner 12 years ago
3 changed file(s) with 14 addition(s) and 13 deletion(s). Raw diff Collapse all Expand all
158158
159159
160160
161 void %llvm.gcroot(<ty>** %ptrloc, <ty2>* %metadata)
161 void %llvm.gcroot(i8** %ptrloc, i8* %metadata)
162162
163163
164164

199199 ;; Initialize the object, telling LLVM that it is now live.
200200 ;; Java has type-tags on objects, so it doesn't need any
201201 ;; metadata.
202 call void %llvm.gcroot(%Object** %X, sbyte* null)
202 %tmp = bitcast %Object** %X to i8**
203 call void %llvm.gcroot(i8** %tmp, i8* null)
203204 ...
204205
205206 ;; As the pointer goes out of scope, store a null value into
218219
219220
220221
221 sbyte *%llvm_gc_allocate(unsigned %Size)
222 void *%llvm_gc_allocate(unsigned %Size)
222223
223224
224225

The llvm_gc_allocate function is a global function defined by the

235236
236237
237238
238 sbyte *%llvm.gcread(sbyte *, sbyte **)
239 void %llvm.gcwrite(sbyte*, sbyte*, sbyte**)
239 i8 *%llvm.gcread(i8 *, i8 **)
240 void %llvm.gcwrite(i8*, i8*, i8**)
240241
241242
242243

Several of the more interesting garbage collectors (e.g., generational

39223922
Syntax:
39233923
39243924

                  
                
3925 declare void @llvm.gcroot(<ty>** %ptrloc, <ty2>* %metadata)
3925 declare void @llvm.gcroot(i8** %ptrloc, i8* %metadata)
39263926
39273927
39283928
Overview:
39563956
Syntax:
39573957
39583958

                  
                
3959 declare i8 * @llvm.gcread(i8 * %ObjPtr, i8 ** %Ptr)
3959 declare i8* @llvm.gcread(i8* %ObjPtr, i8** %Ptr)
39603960
39613961
39623962
Overview:
39913991
Syntax:
39923992
39933993

                  
                
3994 declare void @llvm.gcwrite(i8 * %P1, i8 * %Obj, i8 ** %P2)
3994 declare void @llvm.gcwrite(i8* %P1, i8* %Obj, i8** %P2)
39953995
39963996
39973997
Overview:
40844084
40854085
Syntax:
40864086

                  
                
4087 declare i8 *@llvm.frameaddress(i32 <level>)
4087 declare i8 *@llvm.frameaddress(i32 <level>)
40884088
40894089
40904090
Overview:
41274127
41284128
Syntax:
41294129

                  
                
4130 declare i8 *@llvm.stacksave()
4130 declare i8 *@llvm.stacksave()
41314131
41324132
41334133
Overview:
41934193
41944194
Syntax:
41954195

                  
                
4196 declare void @llvm.prefetch(i8 * <address>,
4197 i32 <rw>, i32 <locality>)
4196 declare void @llvm.prefetch(i8* <address>, i32 <rw>, i32 <locality>)
41984197
41994198
42004199
Overview:
42384237
42394238
Syntax:
42404239

                  
                
4241 declare void @llvm.pcmarker( i32 <id> )
4240 declare void @llvm.pcmarker(i32 <id>)
42424241
42434242
42444243
Overview:
270270 Last modified: $Date$
271271
272272
273