aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend.hpp
diff options
context:
space:
mode:
authorHarold Brenes <harold@hbrenes.com>2025-08-06 15:13:12 -0400
committerHarold Brenes <harold@hbrenes.com>2025-08-06 20:27:31 -0400
commit9d8e15b3af6e41b3b3d4359eb0d2324cfa34608f (patch)
treee6b09afad4fefe38c8ab9888198e1bbf75eea2cf /src/llvm_backend.hpp
parent09a1e170bc92a0ea48a8ee67599c2936e924fe4d (diff)
Implementes the block ABI.2010.3.16 natively via the `objc_block` intrinsic and the `Objc_Block` builtin type.
See: https://clang.llvm.org/docs/Block-ABI-Apple.html
Diffstat (limited to 'src/llvm_backend.hpp')
-rw-r--r--src/llvm_backend.hpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/llvm_backend.hpp b/src/llvm_backend.hpp
index 648e8a732..cc3dcaa4a 100644
--- a/src/llvm_backend.hpp
+++ b/src/llvm_backend.hpp
@@ -198,6 +198,7 @@ struct lbModule {
StringMap<lbAddr> objc_classes;
StringMap<lbAddr> objc_selectors;
StringMap<lbAddr> objc_ivars;
+ isize objc_next_block_id; // Used to name objective-c blocks, per module
PtrMap<u64/*type hash*/, lbAddr> map_cell_info_map; // address of runtime.Map_Info
PtrMap<u64/*type hash*/, lbAddr> map_info_map; // address of runtime.Map_Cell_Info
@@ -483,7 +484,10 @@ gb_internal void lb_emit_if(lbProcedure *p, lbValue cond, lbBlock *true_block, l
gb_internal void lb_start_block(lbProcedure *p, lbBlock *b);
gb_internal lbValue lb_build_call_expr(lbProcedure *p, Ast *expr);
-
+gb_internal lbProcedure *lb_create_dummy_procedure(lbModule *m, String link_name, Type *type);
+gb_internal void lb_begin_procedure_body(lbProcedure *p);
+gb_internal void lb_end_procedure_body(lbProcedure *p);
+gb_internal lbValue lb_emit_call(lbProcedure *p, lbValue value, Array<lbValue> const &args, ProcInlining inlining);
gb_internal lbAddr lb_find_or_generate_context_ptr(lbProcedure *p);
gb_internal lbContextData *lb_push_context_onto_stack(lbProcedure *p, lbAddr ctx);