poltrace.c

来自「一个开源的JAVA虚拟机」· C语言 代码 · 共 137 行

C
137
字号
#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 + =
减小字号Ctrl + -
显示快捷键?