Signed-off-by: Tomek Grabiec <[email protected]>
---
include/vm/call.h | 31 ++++++++++++++++++++++++++++++-
vm/call.c | 12 ------------
2 files changed, 30 insertions(+), 13 deletions(-)
diff --git a/include/vm/call.h b/include/vm/call.h
index c1ed6bd..557fb86 100644
--- a/include/vm/call.h
+++ b/include/vm/call.h
@@ -4,10 +4,39 @@
#include <stdarg.h>
#include <stdint.h>
+#include "vm/jni.h"
+
struct vm_method;
struct vm_object;
-unsigned long vm_call_method(struct vm_method *method, ...);
unsigned long vm_call_method_v(struct vm_method *method, va_list args);
+#define DECLARE_VM_CALL_METHOD(type, suffix) \
+ static inline type \
+ vm_call_method##suffix(struct vm_method *method, ...) \
+ { \
+ type result; \
+ va_list args; \
+ \
+ va_start(args, method); \
+ result = (type)vm_call_method_v(method, args); \
+ va_end(args); \
+ \
+ return result; \
+ }
+
+static inline void vm_call_method(struct vm_method *method, ...)
+{
+ va_list args;
+
+ va_start(args, method);
+ vm_call_method_v(method, args);
+ va_end(args);
+}
+
+DECLARE_VM_CALL_METHOD(unsigned long, _ulong);
+DECLARE_VM_CALL_METHOD(struct vm_object *, _object);
+DECLARE_VM_CALL_METHOD(jint, _jint);
+DECLARE_VM_CALL_METHOD(jboolean, _jboolean);
+
#endif
diff --git a/vm/call.c b/vm/call.c
index 0b81e99..718917e 100644
--- a/vm/call.c
+++ b/vm/call.c
@@ -112,15 +112,3 @@ unsigned long vm_call_method_v(struct vm_method *method,
va_list args)
return vm_call_method_a(method, args_array);
}
-
-unsigned long vm_call_method(struct vm_method *method, ...)
-{
- unsigned long result;
- va_list args;
-
- va_start(args, method);
- result = vm_call_method_v(method, args);
- va_end(args);
-
- return result;
-}
--
1.6.0.6
------------------------------------------------------------------------------
_______________________________________________
Jatovm-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jatovm-devel