kit

kit
git clone https://git.ryansepassi.com/git/kit.git
Log | Files | Refs | README

frontend.c (1209B)


      1 #include <kit/frontend.h>
      2 #include <setjmp.h>
      3 #include <stdarg.h>
      4 
      5 #include "core/core.h"
      6 #include "core/metrics.h"
      7 
      8 KitStatus kit_frontend_run(KitCompiler* c, KitFrontendRunFn fn, void* user) {
      9   PanicFrame panic;
     10   KitStatus rc;
     11   if (!c || !fn) return KIT_INVALID;
     12   compiler_panic_push(c, &panic);
     13   if (setjmp(panic.env)) {
     14     compiler_run_cleanups(c);
     15     compiler_panic_pop(c, &panic);
     16     return KIT_ERR;
     17   }
     18   rc = fn(c, user);
     19   compiler_panic_pop(c, &panic);
     20   return rc;
     21 }
     22 
     23 void kit_frontend_metrics_scope_begin(KitCompiler* c, const char* name) {
     24   metrics_scope_begin((Compiler*)c, name);
     25 }
     26 
     27 void kit_frontend_metrics_scope_end(KitCompiler* c, const char* name) {
     28   metrics_scope_end((Compiler*)c, name);
     29 }
     30 
     31 void kit_frontend_metrics_count(KitCompiler* c, const char* name,
     32                                 uint64_t value) {
     33   metrics_count((Compiler*)c, name, (u64)value);
     34 }
     35 
     36 void kit_frontend_fatal(KitCompiler* c, KitSrcLoc loc, const char* fmt, ...) {
     37   va_list ap;
     38   va_start(ap, fmt);
     39   kit_frontend_vfatal(c, loc, fmt, ap);
     40 }
     41 
     42 void kit_frontend_vfatal(KitCompiler* c, KitSrcLoc loc, const char* fmt,
     43                          va_list ap) {
     44   compiler_panicv((Compiler*)c, loc, fmt, ap);
     45 }