X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Fmodule.c;h=b8109b370e434bdba23ad0ac2c93c9eb924871fb;hp=31bd2df0441260ef79f3721fb7b32475f13c22fc;hb=4a49fe2f8eb21cdeabb06acec7a0395b6708d911;hpb=94fbd01435494508cb54d6321c7d745b94949475 diff --git a/src/module.c b/src/module.c index 31bd2df..b8109b3 100644 --- a/src/module.c +++ b/src/module.c @@ -8,35 +8,43 @@ #include "php.h" #include "php_ini.h" #include "ext/standard/info.h" + #include "php_psi.h" +#include "parser.h" +#include "validator.h" +#include "compiler.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); - jit_context_destroy(ctx); UNREGISTER_INI_ENTRIES();