Skip to content

Instantly share code, notes, and snippets.

@fjolnir
Created June 7, 2012 13:54
Show Gist options
  • Save fjolnir/2888901 to your computer and use it in GitHub Desktop.
Save fjolnir/2888901 to your computer and use it in GitHub Desktop.
%struct.__block_literal_generic = type { i8*, i32, i32, i8*, %struct.__tq_block_descriptor* }
%struct.__tq_block_descriptor = type { i64, i64 }
@_NSConcreteGlobalBlock = external global i8*
@0 = private unnamed_addr constant [6 x i8] c"%@:%@\00"
@__tq_block_descriptor_tmp = internal constant { i64, i64, i8*, i8* } { i64 0, i64 0, i8* getelementptr inbounds ([6 x i8]* @0, i32 0, i32 0), i8* null }
@__tq_block_literal_global = internal constant { i8**, i32, i32, i8* (i8*, i8*)*, i8* } { i8** @_NSConcreteGlobalBlock, i32 1342177280, i32 0, i8* (i8*, i8*)* @__tq_block_invoke_1, i8* bitcast ({ i64, i64, i8*, i8* }* @__tq_block_descriptor_tmp to i8*) }
@className_NSNumber = private unnamed_addr constant [9 x i8] c"NSNumber\00"
@sel_numberWithDouble = private unnamed_addr constant [18 x i8] c"numberWithDouble:\00"
@1 = private unnamed_addr constant [6 x i8] c"%@:%@\00"
@__tq_block_descriptor_tmp1 = internal constant { i64, i64, i8*, i8* } { i64 0, i64 0, i8* getelementptr inbounds ([6 x i8]* @1, i32 0, i32 0), i8* null }
@__tq_block_literal_global2 = internal constant { i8**, i32, i32, i8* (i8*)*, i8* } { i8** @_NSConcreteGlobalBlock, i32 1342177280, i32 0, i8* (i8*)* @__tq_block_invoke_0, i8* bitcast ({ i64, i64, i8*, i8* }* @__tq_block_descriptor_tmp1 to i8*) }
declare void @objc_allocateClassPair(i8*, i8*, i64)
declare void @objc_registerClassPair(i8*)
declare i8 @class_addIvar(i8*, i8*, i64, i8, i8*)
declare i8 @class_addMethod(i8*, i8*, i8*, i8*)
declare i8* @objc_msgSend(i8*, i8*, ...)
declare void @objc_storeStrong(i8**, i8*)
declare i8* @objc_storeWeak(i8**, i8*)
declare i8* @objc_loadWeak(i8**)
declare void @objc_destroyWeak(i8**)
declare i8* @objc_retain(i8*)
declare void @objc_release(i8*)
declare i8* @sel_registerName(i8*)
declare i8* @sel_getName(i8*)
declare i8* @objc_getClass(i8*)
define i8* @__tq_block_invoke_0(i8*) {
entry:
%__blk = alloca i8*
store i8* %0, i8** %__blk
%1 = alloca i8*
store i8* null, i8** %1
store i8* bitcast ({ i8**, i32, i32, i8* (i8*, i8*)*, i8* }* @__tq_block_literal_global to i8*), i8** %1
%2 = load i8** %1
%block.literal = bitcast i8* %2 to %struct.__block_literal_generic*
%funPtr = getelementptr inbounds %struct.__block_literal_generic* %block.literal, i32 0, i32 3
%blockLiteralCast = bitcast %struct.__block_literal_generic* %block.literal to i8*
%3 = call i8* @objc_getClass(i8* getelementptr inbounds ([9 x i8]* @className_NSNumber, i32 0, i32 0))
%4 = call i8* @sel_registerName(i8* getelementptr inbounds ([18 x i8]* @sel_numberWithDouble, i32 0, i32 0))
%5 = call i8* (i8*, i8*, ...)* @objc_msgSend(i8* %3, i8* %4, double 1.230000e+02)
%6 = load i8** %funPtr
%funCast = bitcast i8* %6 to i8* (i8*, i8*)*
%call = call i8* %funCast(i8* %blockLiteralCast, i8* %5)
ret i8* %call
}
define i8* @__tq_block_invoke_1(i8*, i8*) {
entry:
%b = alloca i8*
%__blk = alloca i8*
store i8* %0, i8** %__blk
store i8* %1, i8** %b
%2 = load i8** %b
ret i8* %2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment