hotspot/src/cpu/sparc/vm/jniFastGetField_sparc.cpp
changeset 44093 e22e0d071bf9
parent 44088 fb5421685295
child 44406 a46a6c4d1dd9
equal deleted inserted replaced
44092:bc842cc2356b 44093:e22e0d071bf9
     1 /*
     1 /*
     2  * Copyright (c) 2004, 2017, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2004, 2010, 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);
       
    72   __ ld_ptr (O1, 0, O5);
    71   __ ld_ptr (O1, 0, O5);
    73 
    72 
    74   assert(count < LIST_CAPACITY, "LIST_CAPACITY too small");
    73   assert(count < LIST_CAPACITY, "LIST_CAPACITY too small");
    75   speculative_load_pclist[count] = __ pc();
    74   speculative_load_pclist[count] = __ pc();
    76   switch (type) {
    75   switch (type) {
   146   Address cnt_addr(G3, cnt_addrlit.low10());
   145   Address cnt_addr(G3, cnt_addrlit.low10());
   147   __ ld (cnt_addr, G4);
   146   __ ld (cnt_addr, G4);
   148   __ andcc (G4, 1, G0);
   147   __ andcc (G4, 1, G0);
   149   __ br (Assembler::notZero, false, Assembler::pn, label1);
   148   __ br (Assembler::notZero, false, Assembler::pn, label1);
   150   __ delayed()->srl (O2, 2, O4);
   149   __ delayed()->srl (O2, 2, O4);
   151   __ andn (O1, JNIHandles::weak_tag_mask, O1);
       
   152   __ ld_ptr (O1, 0, O5);
   150   __ ld_ptr (O1, 0, O5);
   153   __ add (O5, O4, O5);
   151   __ add (O5, O4, O5);
   154 
   152 
   155 #ifndef _LP64
   153 #ifndef _LP64
   156   assert(count < LIST_CAPACITY-1, "LIST_CAPACITY too small");
   154   assert(count < LIST_CAPACITY-1, "LIST_CAPACITY too small");
   219   Address cnt_addr(O3, cnt_addrlit.low10());
   217   Address cnt_addr(O3, cnt_addrlit.low10());
   220   __ ld (cnt_addr, G4);
   218   __ ld (cnt_addr, G4);
   221   __ andcc (G4, 1, G0);
   219   __ andcc (G4, 1, G0);
   222   __ br (Assembler::notZero, false, Assembler::pn, label1);
   220   __ br (Assembler::notZero, false, Assembler::pn, label1);
   223   __ delayed()->srl (O2, 2, O4);
   221   __ delayed()->srl (O2, 2, O4);
   224   __ andn (O1, JNIHandles::weak_tag_mask, O1);
       
   225   __ ld_ptr (O1, 0, O5);
   222   __ ld_ptr (O1, 0, O5);
   226 
   223 
   227   assert(count < LIST_CAPACITY, "LIST_CAPACITY too small");
   224   assert(count < LIST_CAPACITY, "LIST_CAPACITY too small");
   228   speculative_load_pclist[count] = __ pc();
   225   speculative_load_pclist[count] = __ pc();
   229   switch (type) {
   226   switch (type) {