#7241 [C1] Fix an oopmap not found assert

Tue, 10 Jul 2018 16:46:48 +0800

author
fujie
date
Tue, 10 Jul 2018 16:46:48 +0800
changeset 9161
97a8ece254bc
parent 9160
b6ac0b9d8b02
child 9162
cf69af12ba58

#7241 [C1] Fix an oopmap not found assert

# Internal Error (/home/zhaixiang/project/loongson/jdk8-mips-c1/hotspot/src/share/vm/compiler/oopMap.cpp:305), pid=10960, tid=0x000000ff9795f1f0
# assert(i < len) failed: oopmap not found

src/cpu/mips/vm/c1_Runtime1_mips.cpp file | annotate | diff | comparison | revisions
     1.1 --- a/src/cpu/mips/vm/c1_Runtime1_mips.cpp	Tue Jul 10 14:18:39 2018 +0800
     1.2 +++ b/src/cpu/mips/vm/c1_Runtime1_mips.cpp	Tue Jul 10 16:46:48 2018 +0800
     1.3 @@ -69,12 +69,10 @@
     1.4    get_thread(thread);
     1.5    move(A0, thread);
     1.6  
     1.7 -  int call_offset;
     1.8    if(!align_stack) {
     1.9      set_last_Java_frame(thread, NOREG, FP, NULL);
    1.10    } else {
    1.11      address the_pc = pc();
    1.12 -    call_offset = offset();
    1.13      set_last_Java_frame(thread, NOREG, FP, the_pc);
    1.14      move(AT, -(StackAlignmentInBytes));
    1.15      andr(SP, SP, AT);
    1.16 @@ -102,9 +100,8 @@
    1.17  #endif
    1.18    jalr(T9);
    1.19    delayed()->nop();
    1.20 -  if (!align_stack) {
    1.21 -    call_offset = offset();
    1.22 -  }
    1.23 +
    1.24 +  int call_offset = offset();
    1.25  
    1.26    // verify callee-saved register
    1.27  #ifdef ASSERT
    1.28 @@ -707,8 +704,10 @@
    1.29  
    1.30    // compute the exception handler.
    1.31    // the exception oop and the throwing pc are read from the fields in JavaThread
    1.32 +  __ block_comment(";; will call_RT exception_handler_for_pc");
    1.33    int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, exception_handler_for_pc));
    1.34    oop_maps->add_gc_map(call_offset, oop_map);
    1.35 +  __ block_comment(";; end of call_RT exception_handler_for_pc");
    1.36    // V0:  handler address or NULL if no handler exists
    1.37    //      will be the deopt blob if nmethod was deoptimized while we looked up
    1.38    //      handler regardless of whether handler existed in the nmethod.

mercurial