AARCH64: Stray pop in C1 LIR_Assembler::emit_profile_type

XMLWordPrintable

    • Type: Bug
    • Resolution: Fixed
    • Priority: P4
    • 9
    • Affects Version/s: None
    • Component/s: hotspot
    • None
    • b56

        There's a pop() in emit_profile_type with no corresponding push(). If we hit that pop
        we will crash immediately.

        This is assert-only code so we never see it in production.

        #ifdef ASSERT
                {
                  Label ok;
                  __ ldr(rscratch1, mdo_addr);
                  __ cbz(rscratch1, ok);
                  __ cmp(rscratch1, TypeEntries::null_seen);
                  __ br(Assembler::EQ, ok);
                  // may have been set by another thread
                  __ dmb(Assembler::ISHLD);
                  __ mov_metadata(rscratch1, exact_klass->constant_encoding());
                  __ ldr(rscratch2, mdo_addr);
                  __ eor(rscratch2, rscratch1, rscratch2);
                  __ andr(rscratch2, rscratch2, TypeEntries::type_mask);
                  __ cbz(rscratch2, ok);

                  __ stop("unexpected profiling mismatch");
                  __ bind(ok);
                  __ pop(tmp);
                }
        #endif

              Assignee:
              Andrew Haley
              Reporter:
              Andrew Haley
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: