src/cpu/sparc/vm/jniFastGetField_sparc.cpp

changeset 9669
32bc598624bd
parent 4323
f0c2369fda5a
child 9703
2fdf635bcf28
equal deleted inserted replaced
9668:acb9351e3a29 9669:32bc598624bd
1 /* 1 /*
2 * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 2004, 2017, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
66 Address cnt_addr(O3, cnt_addrlit.low10()); 66 Address cnt_addr(O3, cnt_addrlit.low10());
67 __ ld (cnt_addr, G4); 67 __ ld (cnt_addr, G4);
68 __ andcc (G4, 1, G0); 68 __ andcc (G4, 1, G0);
69 __ br (Assembler::notZero, false, Assembler::pn, label1); 69 __ br (Assembler::notZero, false, Assembler::pn, label1);
70 __ delayed()->srl (O2, 2, O4); 70 __ delayed()->srl (O2, 2, O4);
71 __ andn (O1, JNIHandles::weak_tag_mask, O1);
71 __ ld_ptr (O1, 0, O5); 72 __ ld_ptr (O1, 0, O5);
72 73
73 assert(count < LIST_CAPACITY, "LIST_CAPACITY too small"); 74 assert(count < LIST_CAPACITY, "LIST_CAPACITY too small");
74 speculative_load_pclist[count] = __ pc(); 75 speculative_load_pclist[count] = __ pc();
75 switch (type) { 76 switch (type) {
145 Address cnt_addr(G3, cnt_addrlit.low10()); 146 Address cnt_addr(G3, cnt_addrlit.low10());
146 __ ld (cnt_addr, G4); 147 __ ld (cnt_addr, G4);
147 __ andcc (G4, 1, G0); 148 __ andcc (G4, 1, G0);
148 __ br (Assembler::notZero, false, Assembler::pn, label1); 149 __ br (Assembler::notZero, false, Assembler::pn, label1);
149 __ delayed()->srl (O2, 2, O4); 150 __ delayed()->srl (O2, 2, O4);
151 __ andn (O1, JNIHandles::weak_tag_mask, O1);
150 __ ld_ptr (O1, 0, O5); 152 __ ld_ptr (O1, 0, O5);
151 __ add (O5, O4, O5); 153 __ add (O5, O4, O5);
152 154
153 #ifndef _LP64 155 #ifndef _LP64
154 assert(count < LIST_CAPACITY-1, "LIST_CAPACITY too small"); 156 assert(count < LIST_CAPACITY-1, "LIST_CAPACITY too small");
217 Address cnt_addr(O3, cnt_addrlit.low10()); 219 Address cnt_addr(O3, cnt_addrlit.low10());
218 __ ld (cnt_addr, G4); 220 __ ld (cnt_addr, G4);
219 __ andcc (G4, 1, G0); 221 __ andcc (G4, 1, G0);
220 __ br (Assembler::notZero, false, Assembler::pn, label1); 222 __ br (Assembler::notZero, false, Assembler::pn, label1);
221 __ delayed()->srl (O2, 2, O4); 223 __ delayed()->srl (O2, 2, O4);
224 __ andn (O1, JNIHandles::weak_tag_mask, O1);
222 __ ld_ptr (O1, 0, O5); 225 __ ld_ptr (O1, 0, O5);
223 226
224 assert(count < LIST_CAPACITY, "LIST_CAPACITY too small"); 227 assert(count < LIST_CAPACITY, "LIST_CAPACITY too small");
225 speculative_load_pclist[count] = __ pc(); 228 speculative_load_pclist[count] = __ pc();
226 switch (type) { 229 switch (type) {

mercurial