DEADSOFTWARE

Разрешено повторно объявлять блоки CONST TYPE VAR, поправлено сравнение массивов...
[dsw-obn.git] / src / backends / jvm / generator-jvm.c
index 91b82bf8c0465f99626d544d4f787421a15d0e23..7da9b61ce94f0558220d745007e8a8f53688abf7 100644 (file)
@@ -9,6 +9,7 @@
 #include <gc.h>
 
 #include "../../oberon-internals.h"
+#include "../../oberon-type-compat.h"
 #include "../../generator.h"
 #include "generator-jvm.h"
 #include "generator-jvm-abi.h"
@@ -605,7 +606,7 @@ oberon_generator_init_type(oberon_context_t * ctx, oberon_type_t * type)
                t -> postfix = jvm_get_postfix(type);
        }
 
-       if(type -> class == OBERON_TYPE_POINTER ||
+       if((type -> class == OBERON_TYPE_POINTER && type -> base -> class == OBERON_TYPE_RECORD) ||
                type -> class == OBERON_TYPE_PROCEDURE ||
                type -> class == OBERON_TYPE_RECORD ||
                type -> class == OBERON_TYPE_SYSTEM_PTR)
@@ -1454,8 +1455,7 @@ jvm_generate_compare_op(gen_proc_t * p, oberon_type_t * t, int op)
        }
        else if(prefix == 'a')
        {
-               if(t -> class == OBERON_TYPE_STRING
-                       || (t -> class == OBERON_TYPE_POINTER && t -> base -> class == OBERON_TYPE_CHAR))
+               if(oberon_is_array_of_char_type(t) || oberon_is_string_type(t))
                {
                        jvm_generate(p, 2, 1, "invokestatic SYSTEM/STRCMP([B[B)I");
                        jvm_generate(p, 1, 0, "if%s L%i", cmpop, label_true);