{"body":"fernando@fernando-OptiPlex-9020:~$ cat jit.p6 \nuse NativeCall;\n\nsub gcc_jit_context_acquire() returns Pointer is native(\"gccjit\") { * }\nsub gcc_jit_context_get_type(Pointer, int16) returns Pointer is native(\"gccjit\") { * }\nsub gcc_jit_context_new_param(Pointer, Pointer, Pointer, Str) returns Pointer is native(\"gccjit\") { * }\nsub gcc_jit_context_new_binary_op(Pointer, Pointer, int16, Pointer, Pointer, Pointer) returns Pointer is native(\"gccjit\") { * }\nsub gcc_jit_param_as_rvalue(Pointer) returns Pointer is native(\"gccjit\") { * };\nsub gcc_jit_context_new_function(Pointer, Pointer, int16, Pointer, Str, int16, CArray[Pointer], int16) returns Pointer is native(\"gccjit\") { * }\nsub gcc_jit_function_new_block(Pointer, Str) returns Pointer is native(\"gccjit\") { * }\nsub gcc_jit_block_add_eval(Pointer, Pointer, Pointer) is native(\"gccjit\") { * }\nsub gcc_jit_block_add_assignment(Pointer, Pointer, Pointer, Pointer) is native(\"gccjit\") { * }\nsub gcc_jit_block_end_with_return(Pointer, Pointer, Pointer) returns Pointer is native(\"gccjit\") { * }\nsub gcc_jit_block_end_with_void_return(Pointer, Pointer) returns Pointer is native(\"gccjit\") { * }\nsub gcc_jit_context_compile(Pointer) returns Pointer is native(\"gccjit\") { * }\nsub gcc_jit_context_compile_to_file(Pointer, int16, Str) is native(\"gccjit\") { * }\nsub gcc_jit_result_get_code(Pointer, Str) returns Pointer is native(\"gccjit\") { * }\nsub gcc_jit_context_new_call (Pointer, Pointer, Pointer, int16, CArray[Pointer]) returns Pointer is native(\"gccjit\") { * }\nsub gcc_jit_context_new_rvalue_from_int(Pointer, Pointer, int16) returns Pointer is native(\"gccjit\") { * }\nsub gcc_jit_context_new_string_literal(Pointer, Str) returns Pointer is native(\"gccjit\") { * }\n\n\n\n\n\nmy Pointer $context  = gcc_jit_context_acquire;\nmy Pointer $int-type = gcc_jit_context_get_type($context, 8);\nmy Pointer $cchr-type = gcc_jit_context_get_type($context, 17);\nmy Pointer $param-a  = gcc_jit_context_new_param($context, Pointer, $int-type, \"a\");\nmy Pointer $param-b  = gcc_jit_context_new_param($context, Pointer, $int-type, \"b\");\nmy Pointer $a-plus-b = gcc_jit_context_new_binary_op($context, Pointer, 0, $int-type, gcc_jit_param_as_rvalue($param-a), gcc_jit_param_as_rvalue($param-b));\nmy Pointer $add-func = gcc_jit_context_new_function($context, Pointer, 0, $int-type, \"add\", 2, CArray[Pointer].new($param-a, $param-b), 0);\nmy Pointer $block    = gcc_jit_function_new_block($add-func, \"one_block\");\ngcc_jit_block_end_with_return($block, Pointer, $a-plus-b);\n\nmy Pointer $_0 = gcc_jit_context_new_rvalue_from_int($context, $int-type, 0);\nmy Pointer $_2 = gcc_jit_context_new_rvalue_from_int($context, $int-type, 2);\nmy Pointer $_3 = gcc_jit_context_new_rvalue_from_int($context, $int-type, 3);\n\nmy Pointer $call-add = gcc_jit_context_new_call($context, Pointer, $add-func, 2, CArray[Pointer].new($_2, $_3));\n\n\n\nmy Pointer $main     = gcc_jit_context_new_function($context, Pointer, 0, $int-type, \"main\", 0, CArray[Pointer].new, 0);\nmy Pointer $main-blk = gcc_jit_function_new_block($main, \"_main_\");\n\nmy Pointer $format   = gcc_jit_context_new_param($context, Pointer, $cchr-type, \"format\");\nmy Pointer $printf   = gcc_jit_context_new_function($context, Pointer, 2, $int-type, \"printf\", 1, CArray[Pointer].new($format), 1);\n\n#gcc_jit_block_end_with_return($main-blk, Pointer, $call-add);\ngcc_jit_block_add_eval(\n\t$main-blk,\n\tPointer,\n\tgcc_jit_context_new_call(\n\t\t$context,\n\t\tPointer,\n\t\t$printf,\n\t\t2,\n\t\tCArray[Pointer].new(\n\t\t\tgcc_jit_context_new_string_literal($context, \"sum: %d\\n\"),\n\t\t\t$call-add\n\t\t)\n\t)\n);\ngcc_jit_block_end_with_return($main-blk, Pointer, $_0);\n\ngcc_jit_context_compile_to_file($context, 3, \"a.out\");\n\n#my Pointer $result   = gcc_jit_context_compile($context);\n#my $add = gcc_jit_result_get_code($result, \"add\");\n#say $add.(2, 3)\nfernando@fernando-OptiPlex-9020:~$ perl6 jit.p6 \nfernando@fernando-OptiPlex-9020:~$ ./a.out \nsum: 5\n","name":"","extension":"txt","url":"https://www.irccloud.com/pastebin/FdZRxIbF","modified":1546974719,"id":"FdZRxIbF","size":3885,"lines":74,"own_paste":false,"theme":"","date":1546974719}