src/cpu/x86/vm/templateTable_x86_32.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File hotspot Sdiff src/cpu/x86/vm

src/cpu/x86/vm/templateTable_x86_32.cpp

Print this page


   1 /*
   2  * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   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
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *


 168       break;
 169 #endif // INCLUDE_ALL_GCS
 170     case BarrierSet::CardTableModRef:
 171     case BarrierSet::CardTableExtension:
 172       {
 173         if (val == noreg) {
 174           __ movptr(obj, NULL_WORD);
 175         } else {
 176           __ movl(obj, val);
 177           // flatten object address if needed
 178           if (!precise || (obj.index() == noreg && obj.disp() == 0)) {
 179             __ store_check(obj.base());
 180           } else {
 181             __ leal(rdx, obj);
 182             __ store_check(rdx);
 183           }
 184         }
 185       }
 186       break;
 187     case BarrierSet::ModRef:
 188     case BarrierSet::Other:
 189       if (val == noreg) {
 190         __ movptr(obj, NULL_WORD);
 191       } else {
 192         __ movl(obj, val);
 193       }
 194       break;
 195     default      :
 196       ShouldNotReachHere();
 197 
 198   }
 199 }
 200 
 201 Address TemplateTable::at_bcp(int offset) {
 202   assert(_desc->uses_bcp(), "inconsistent uses_bcp information");
 203   return Address(rsi, offset);
 204 }
 205 
 206 
 207 void TemplateTable::patch_bytecode(Bytecodes::Code bc, Register bc_reg,
 208                                    Register temp_reg, bool load_bc_into_bc_reg/*=true*/,


   1 /*
   2  * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   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
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *


 168       break;
 169 #endif // INCLUDE_ALL_GCS
 170     case BarrierSet::CardTableModRef:
 171     case BarrierSet::CardTableExtension:
 172       {
 173         if (val == noreg) {
 174           __ movptr(obj, NULL_WORD);
 175         } else {
 176           __ movl(obj, val);
 177           // flatten object address if needed
 178           if (!precise || (obj.index() == noreg && obj.disp() == 0)) {
 179             __ store_check(obj.base());
 180           } else {
 181             __ leal(rdx, obj);
 182             __ store_check(rdx);
 183           }
 184         }
 185       }
 186       break;
 187     case BarrierSet::ModRef:

 188       if (val == noreg) {
 189         __ movptr(obj, NULL_WORD);
 190       } else {
 191         __ movl(obj, val);
 192       }
 193       break;
 194     default      :
 195       ShouldNotReachHere();
 196 
 197   }
 198 }
 199 
 200 Address TemplateTable::at_bcp(int offset) {
 201   assert(_desc->uses_bcp(), "inconsistent uses_bcp information");
 202   return Address(rsi, offset);
 203 }
 204 
 205 
 206 void TemplateTable::patch_bytecode(Bytecodes::Code bc, Register bc_reg,
 207                                    Register temp_reg, bool load_bc_into_bc_reg/*=true*/,


src/cpu/x86/vm/templateTable_x86_32.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File