Mercurial > hg > truffle
comparison src/cpu/sparc/vm/dump_sparc.cpp @ 2389:c10b82a05d58
Merge
author | trims |
---|---|
date | Fri, 25 Mar 2011 18:04:45 -0700 |
parents | c7f3d0b4570f |
children | 1d1603768966 |
comparison
equal
deleted
inserted
replaced
2374:661c46a8434c | 2389:c10b82a05d58 |
---|---|
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 |