hotspot/src/cpu/sparc/vm/dump_sparc.cpp
changeset 8725 8c1e3dd5fe1b
parent 7397 5b173b4ca846
child 8921 14bfe81f2a9d
equal deleted inserted replaced
8724:693c6b883b54 8725:8c1e3dd5fe1b
    78   Label common_code;
    78   Label common_code;
    79   for (int i = 0; i < vtbl_list_size; ++i) {
    79   for (int i = 0; i < vtbl_list_size; ++i) {
    80     for (int j = 0; j < num_virtuals; ++j) {
    80     for (int j = 0; j < num_virtuals; ++j) {
    81       dummy_vtable[num_virtuals * i + j] = (void*)masm->pc();
    81       dummy_vtable[num_virtuals * i + j] = (void*)masm->pc();
    82       __ save(SP, -256, SP);
    82       __ save(SP, -256, SP);
       
    83       int offset = (i << 8) + j;
       
    84       Register src = G0;
       
    85       if (!Assembler::is_simm13(offset)) {
       
    86         __ sethi(offset, L0);
       
    87         src = L0;
       
    88         offset = offset & ((1 << 10) - 1);
       
    89       }
    83       __ brx(Assembler::always, false, Assembler::pt, common_code);
    90       __ brx(Assembler::always, false, Assembler::pt, common_code);
    84 
    91 
    85       // Load L0 with a value indicating vtable/offset pair.
    92       // Load L0 with a value indicating vtable/offset pair.
    86       // -- bits[ 7..0]  (8 bits) which virtual method in table?
    93       // -- bits[ 7..0]  (8 bits) which virtual method in table?
    87       // -- bits[12..8]  (5 bits) which virtual method table?
    94       // -- bits[13..8]  (6 bits) which virtual method table?
    88       // -- must fit in 13-bit instruction immediate field.
    95       __ delayed()->or3(src, offset, L0);
    89       __ delayed()->set((i << 8) + j, L0);
       
    90     }
    96     }
    91   }
    97   }
    92 
    98 
    93   __ bind(common_code);
    99   __ bind(common_code);
    94 
   100