X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fbackends%2Fjvm%2Fgenerator-jvm.c;h=7da9b61ce94f0558220d745007e8a8f53688abf7;hb=f34b0f1f6a54eda1ad328576e48d92b96ad160ac;hp=91b82bf8c0465f99626d544d4f787421a15d0e23;hpb=8db9b6a5f0d565ae2994cefeb081712ce917f67f;p=dsw-obn.git diff --git a/src/backends/jvm/generator-jvm.c b/src/backends/jvm/generator-jvm.c index 91b82bf..7da9b61 100644 --- a/src/backends/jvm/generator-jvm.c +++ b/src/backends/jvm/generator-jvm.c @@ -9,6 +9,7 @@ #include #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);