hotspot/src/cpu/x86/vm/jniFastGetField_x86_64.cpp
changeset 44406 a46a6c4d1dd9
parent 44093 e22e0d071bf9
child 46630 75aa3e39d02c
equal deleted inserted replaced
44405:5bc48f22b149 44406:a46a6c4d1dd9
     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.
    78     __ xorptr(robj, rcounter);
    78     __ xorptr(robj, rcounter);
    79     __ xorptr(robj, rcounter);                   // obj, since
    79     __ xorptr(robj, rcounter);                   // obj, since
    80                                                 // robj ^ rcounter ^ rcounter == robj
    80                                                 // robj ^ rcounter ^ rcounter == robj
    81                                                 // robj is data dependent on rcounter.
    81                                                 // robj is data dependent on rcounter.
    82   }
    82   }
       
    83 
       
    84   __ clear_jweak_tag(robj);
       
    85 
    83   __ movptr(robj, Address(robj, 0));             // *obj
    86   __ movptr(robj, Address(robj, 0));             // *obj
    84   __ mov   (roffset, c_rarg2);
    87   __ mov   (roffset, c_rarg2);
    85   __ shrptr(roffset, 2);                         // offset
    88   __ shrptr(roffset, 2);                         // offset
    86 
    89 
    87   assert(count < LIST_CAPACITY, "LIST_CAPACITY too small");
    90   assert(count < LIST_CAPACITY, "LIST_CAPACITY too small");
   176     __ xorptr(robj, rcounter);
   179     __ xorptr(robj, rcounter);
   177     __ xorptr(robj, rcounter);                   // obj, since
   180     __ xorptr(robj, rcounter);                   // obj, since
   178                                                 // robj ^ rcounter ^ rcounter == robj
   181                                                 // robj ^ rcounter ^ rcounter == robj
   179                                                 // robj is data dependent on rcounter.
   182                                                 // robj is data dependent on rcounter.
   180   }
   183   }
       
   184 
       
   185   __ clear_jweak_tag(robj);
       
   186 
   181   __ movptr(robj, Address(robj, 0));             // *obj
   187   __ movptr(robj, Address(robj, 0));             // *obj
   182   __ mov   (roffset, c_rarg2);
   188   __ mov   (roffset, c_rarg2);
   183   __ shrptr(roffset, 2);                         // offset
   189   __ shrptr(roffset, 2);                         // offset
   184 
   190 
   185   assert(count < LIST_CAPACITY, "LIST_CAPACITY too small");
   191   assert(count < LIST_CAPACITY, "LIST_CAPACITY too small");