#include "config.h"
#endif
-#include <jit/jit.h>
-
#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);
-
- jit_context_destroy(ctx);
+ PSI_ContextDtor(&PSI_G(context));
UNREGISTER_INI_ENTRIES();