X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Fmodule.c;h=4df3e110a4c65c49323d2c0cae64ca22c8686999;hp=c45ddb0014ec0908c55c795b151aea6b3a9b285a;hb=762750b4a3f4e0471993849c4bd12965f6b62356;hpb=f1a387482a9270a34ae684109ad8be7c104148d6 diff --git a/src/module.c b/src/module.c index c45ddb0..4df3e11 100644 --- a/src/module.c +++ b/src/module.c @@ -3,42 +3,45 @@ #include "config.h" #endif -#include - #include "php.h" #include "php_ini.h" #include "ext/standard/info.h" + #include "php_psi.h" +#include "libjit.h" + ZEND_DECLARE_MODULE_GLOBALS(psi); PHP_INI_BEGIN() - STD_PHP_INI_ENTRY("psi.directory", "psis", PHP_INI_ALL, OnUpdateString, directory, zend_psi_globals, psi_globals) + STD_PHP_INI_ENTRY("psi.directory", "psis", PHP_INI_ALL, OnUpdateString, directory, zend_psi_globals, psi_globals) PHP_INI_END(); -PHP_MINIT_FUNCTION(psi) +void psi_error(int type, const char *msg, ...) { - jit_context_t ctx; + char buf[0x1000]; + va_list argv; - REGISTER_INI_ENTRIES(); + va_start(argv, msg); + vslprintf(buf, 0x1000, msg, argv); + va_end(argv); - jit_init(); + php_error(type, buf); +} - if (!(ctx = jit_context_create())) { - zend_error(E_WARNING, "Could not initialize libjit!"); - return FAILURE; - } +PHP_MINIT_FUNCTION(psi) +{ + REGISTER_INI_ENTRIES(); - PSI_G(context) = ctx; + PSI_ContextInit(&PSI_G(context), PSI_Libjit(), psi_error); + PSI_ContextBuild(&PSI_G(context), PSI_G(directory)); return SUCCESS; } PHP_MSHUTDOWN_FUNCTION(psi) { - jit_context_t *ctx = PSI_G(context); + PSI_ContextDtor(&PSI_G(context)); - jit_context_destroy(ctx); - UNREGISTER_INI_ENTRIES(); return SUCCESS;