📄 poltrace.c
字号:
#include <jpr/log.h>#include <jpr/assert.h>#include <aegisvm/pol.h>inttrace_pol_init(void) { j_log("trace: initializing POLs"); return 0;}inttrace_pol_finish(void) { j_log("trace: finishing POLs"); return 0;}booltrace_pol_class(POLEnv env, ju2 nargs, const void *args[const]) { POLClass class; j_assert(nargs == 1); class = args[0]; j_log("trace: discharging class obligations: %U", pol_class_name(class)); return true;}booltrace_pol_class_constant(POLEnv env, ju2 nargs, const void *args[const]) { POLClass class; j_assert(nargs == 1); class = args[0]; j_log("trace: discharging class constant obligation: %U", pol_class_name(class)); return true;}booltrace_pol_fieldref_constant(POLEnv env, ju2 nargs, const void *args[const]) { POLField field; j_assert(nargs == 1); field = args[0]; j_log("trace: discharging fieldref constant obligation: %U.%U:%U", pol_class_name(pol_field_class(field)), pol_field_name(field), pol_field_descriptor(field)); return true;}booltrace_pol_methodref_constant(POLEnv env, ju2 nargs, const void *args[const]) { POLMethod method; j_assert(nargs == 1); method = args[0]; j_log("trace: discharging methodref constant obligation: %U.%U%U", pol_class_name(pol_method_class(method)), pol_method_name(method), pol_method_descriptor(method)); return true;}booltrace_pol_interface_methodref_constant(POLEnv env, ju2 nargs, const void *args[const]) { POLMethod method; j_assert(nargs == 1); method = args[0]; j_log("trace: interface methodref constant obligation: %U.%U%U", pol_class_name(pol_method_class(method)), pol_method_name(method), pol_method_descriptor(method)); return true;}booltrace_pol_field(POLEnv env, ju2 nargs, const void *args[const]) { POLField field; j_assert(nargs == 1); field = args[0]; j_log("trace: discharging field obligation %U.%U:%U", pol_class_name(pol_field_class(field)), pol_field_name(field), pol_field_descriptor(field)); return true;}booltrace_pol_method(POLEnv env, ju2 nargs, const void *args[const]) { POLMethod method; j_assert(nargs == 1); method = args[0]; j_log("trace: discharging method obligation %U.%U%U", pol_class_name(pol_method_class(method)), pol_method_name(method), pol_method_descriptor(method)); return true;}pol_predicate_t pol_predicates[] = { &trace_pol_class, &trace_pol_class_constant, &trace_pol_fieldref_constant, &trace_pol_methodref_constant, &trace_pol_interface_methodref_constant, &trace_pol_field, &trace_pol_method,};const char *global_classes[] = {};const void *global_constants[] = {};pol_profile_t pol_profile = { "trace", &trace_pol_init, &trace_pol_finish, sizeof(pol_predicates)/sizeof(pol_predicate_t), pol_predicates, sizeof(global_classes)/sizeof(const char *), global_classes, sizeof(global_constants)/sizeof(const void *), global_constants};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -