X-Git-Url: https://deadsoftware.ru/gitweb?p=dsw-obn.git;a=blobdiff_plain;f=src%2Fbackends%2Fjvm%2Fgenerator-jvm.c;h=189d8d275421b67a4fc2081d664c37ccf4149fc7;hp=21ad4db6c1a2a9aa3dcc2cb24b4088f2c2fafc93;hb=75d0fd92a5342358f37ed9369ccce9355273e51a;hpb=d25fb653bfe19a696d3f53abd784d32ba2d3ee03 diff --git a/src/backends/jvm/generator-jvm.c b/src/backends/jvm/generator-jvm.c index 21ad4db..189d8d2 100644 --- a/src/backends/jvm/generator-jvm.c +++ b/src/backends/jvm/generator-jvm.c @@ -1304,6 +1304,19 @@ jvm_generate_compare_op(gen_proc_t * p, oberon_type_t * t, int op) jvm_generate(p, 2 * cell_size, 1, "%ccmp%c", prefix, fop); jvm_generate(p, 1, 1, "if%s L%i", cmpop, label_true); } + else if(prefix == 'a') + { + if(t -> class == OBERON_TYPE_STRING + || (t -> class == OBERON_TYPE_POINTER && t -> base -> class == OBERON_TYPE_CHAR)) + { + jvm_generate(p, 2, 1, "invokestatic SYSTEM/STRCMP([B[B)I"); + jvm_generate(p, 1, 0, "if%s L%i", cmpop, label_true); + } + else + { + jvm_generate(p, 1, 0, "if_acmp%s L%i", cmpop, label_true); + } + } else { jvm_generate(p, 2 * cell_size, 0, "if_%ccmp%s L%i", prefix, cmpop, label_true);