#include "arch.h"
#include "md-abi.h"
-#include "toolbox/logging.h"
+#include "toolbox/logging.hpp"
-#include "vm/descriptor.h"
+#include "vm/descriptor.hpp"
#include "vm/utf8.h"
utf *name; /* name of the function */
utf *descriptor; /* descriptor of the function */
methoddesc *md;
+ functionptr emit_fastpath; /* emitter for fast-path code */
};
* ICMD_BUILTIN3.)
*/
+#if USES_NEW_SUBTYPE
bool fast_subtype_check(struct _vftbl *, struct _vftbl *);
+#endif
+
+/* From lock.hpp: bool lock_monitor_enter(java_handle_t *); */
+#define LOCK_monitor_enter (functionptr) lock_monitor_enter
+#if defined(__X86_64__)
+# define EMIT_FASTPATH_monitor_enter (functionptr) emit_fastpath_monitor_enter
+#else
+# define EMIT_FASTPATH_monitor_enter (functionptr) NULL
+#endif
+
+/* From lock.hpp: bool lock_monitor_exit(java_handle_t *); */
+#define LOCK_monitor_exit (functionptr) lock_monitor_exit
+#if defined(__X86_64__)
+# define EMIT_FASTPATH_monitor_exit (functionptr) emit_fastpath_monitor_exit
+#else
+# define EMIT_FASTPATH_monitor_exit (functionptr) NULL
+#endif
bool builtin_instanceof(java_handle_t *obj, classinfo *c);
/* NOT AN OP */
java_object_t *builtin_fast_new(classinfo *c);
#define BUILTIN_FAST_new (functionptr) builtin_fast_new
-java_handle_t *builtin_newarray(int32_t size, classinfo *arrayclass);
-/* NOT AN OP */
-java_handle_t *builtin_java_newarray(int32_t size, java_handle_t *arrayclass);
+java_handle_array_t *builtin_java_newarray(int32_t size, java_handle_t *arrayclass);
#define BUILTIN_newarray (functionptr) builtin_java_newarray
-java_handle_objectarray_t *builtin_anewarray(int32_t size, classinfo *componentclass);
-/* NOT AN OP */
-
java_handle_booleanarray_t *builtin_newarray_boolean(int32_t size);
#define BUILTIN_newarray_boolean (functionptr) builtin_newarray_boolean
java_handle_chararray_t *builtin_newarray_char(int32_t size);
double builtin_drem(double a, double b);
#define BUILTIN_drem (functionptr) builtin_drem
-s8 builtin_i2l(s4 i);
-/* NOT AN OP */
float builtin_i2f(s4 i);
#define BUILTIN_i2f (functionptr) builtin_i2f
double builtin_i2d(s4 i);
#define BUILTIN_i2d (functionptr) builtin_i2d
-s4 builtin_l2i(s8 l);
-/* NOT AN OP */
float builtin_l2f(s8 l);
#define BUILTIN_l2f (functionptr) builtin_l2f
double builtin_l2d(s8 l);