-/* -*- mode: c; tab-width: 4; c-basic-offset: 4 -*- */
/****************************** builtin.c **************************************
Copyright (c) 1997 A. Krall, R. Grafl, M. Gschwind, M. Probst
builtin_descriptor builtin_desc[] = {
{(functionptr) builtin_instanceof, "instanceof"},
{(functionptr) builtin_checkcast, "checkcast"},
- {(functionptr) new_builtin_checkcast, "checkcast"},
{(functionptr) builtin_arrayinstanceof, "arrayinstanceof"},
{(functionptr) builtin_checkarraycast, "checkarraycast"},
- {(functionptr) new_builtin_checkarraycast, "checkarraycast"},
- {(functionptr) new_builtin_aastore, "aastore"},
+ {(functionptr) asm_builtin_checkarraycast, "checkarraycast"},
+ {(functionptr) asm_builtin_aastore, "aastore"},
{(functionptr) builtin_new, "new"},
{(functionptr) builtin_anewarray, "anewarray"},
{(functionptr) builtin_newarray_array, "newarray_array"},
{(functionptr) builtin_displaymethodstart, "displaymethodstart"},
{(functionptr) builtin_displaymethodstop, "displaymethodstop"},
{(functionptr) builtin_monitorenter, "monitorenter"},
- {(functionptr) new_builtin_monitorenter, "monitorenter"},
+ {(functionptr) asm_builtin_monitorenter, "monitorenter"},
{(functionptr) builtin_monitorexit, "monitorexit"},
- {(functionptr) new_builtin_monitorexit, "monitorexit"},
+ {(functionptr) asm_builtin_monitorexit, "monitorexit"},
{(functionptr) builtin_idiv, "idiv"},
- {(functionptr) new_builtin_idiv, "idiv"},
+ {(functionptr) asm_builtin_idiv, "idiv"},
{(functionptr) builtin_irem, "irem"},
- {(functionptr) new_builtin_irem, "irem"},
+ {(functionptr) asm_builtin_irem, "irem"},
{(functionptr) builtin_ladd, "ladd"},
{(functionptr) builtin_lsub, "lsub"},
{(functionptr) builtin_lmul, "lmul"},
{(functionptr) builtin_ldiv, "ldiv"},
- {(functionptr) new_builtin_ldiv, "ldiv"},
+ {(functionptr) asm_builtin_ldiv, "ldiv"},
{(functionptr) builtin_lrem, "lrem"},
- {(functionptr) new_builtin_lrem, "lrem"},
+ {(functionptr) asm_builtin_lrem, "lrem"},
{(functionptr) builtin_lshl, "lshl"},
{(functionptr) builtin_lshr, "lshr"},
{(functionptr) builtin_lushr, "lushr"},
static s4 builtin_isanysubclass (classinfo *sub, classinfo *super)
{
- if (super->flags & ACC_INTERFACE) {
- u4 index = super->index;
-/* if (sub->vftbl == NULL) return 0; */
- if (index >= sub->vftbl->interfacetablelength) return 0;
- return ( sub->vftbl->interfacevftbl[index] ) ? 1 : 0;
- }
- else {
- while (sub) {
- if (sub==super) return 1;
- sub = sub->super;
- }
- return 0;
- }
+ if (super->flags & ACC_INTERFACE)
+ return (sub->vftbl->interfacetablelength > super->index) &&
+ (sub->vftbl->interfacetable[-super->index] != NULL);
+
+ return (unsigned) (sub->vftbl->baseval - super->vftbl->baseval) <=
+ (unsigned) (super->vftbl->diffval);
}
log_text ("builtin_checkcast called");
#endif
- if (!obj) return 1;
- if ( builtin_isanysubclass (obj->vftbl->class, class) ) {
+ if (obj == NULL)
+ return 1;
+ if (builtin_isanysubclass (obj->vftbl->class, class))
return 1;
- }
+
#if DEBUG
- printf ("#### checkcast failed ");
- unicode_display (obj->vftbl->class->name);
- printf (" -> ");
- unicode_display (class->name);
- printf ("\n");
+ printf ("#### checkcast failed ");
+ unicode_display (obj->vftbl->class->name);
+ printf (" -> ");
+ unicode_display (class->name);
+ printf ("\n");
#endif
-
+
return 0;
}
-
/*********** interne Funktion: builtin_descriptorscompatible ******************
"uberpr"uft, ob zwei Array-Typdescriptoren compartible sind, d.h.,
}
}
+
+/*
+ * These are local overrides for various environment variables in Emacs.
+ * Please do not remove this and leave it at the end of the file, where
+ * Emacs will automagically detect them.
+ * ---------------------------------------------------------------------
+ * Local variables:
+ * mode: c
+ * indent-tabs-mode: t
+ * c-basic-offset: 4
+ * tab-width: 4
+ * End:
+ */