< prev index next >

src/cpu/ppc/vm/templateTable_ppc_64.cpp

Print this page
rev 12861 : ppc64 addons for 8171392: make contant pool read-only

*** 1,8 **** /* ! * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. ! * Copyright (c) 2013, 2016 SAP SE. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,8 ---- /* ! * Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. ! * Copyright (c) 2013, 2017 SAP SE. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 3658,3672 **** __ lbzx(Rtags, Rindex, Rtags); __ cmpdi(CCR0, Rtags, JVM_CONSTANT_Class); __ bne(CCR0, Lslow_case); ! // Get instanceKlass (load from Rcpool + sizeof(ConstantPool) + Rindex*BytesPerWord). __ sldi(Roffset, Rindex, LogBytesPerWord); ! __ addi(Rscratch, Rcpool, sizeof(ConstantPool)); ! __ isync(); // Order load of instance Klass wrt. tags. ! __ ldx(RinstanceKlass, Roffset, Rscratch); // Make sure klass is fully initialized and get instance_size. __ lbz(Rscratch, in_bytes(InstanceKlass::init_state_offset()), RinstanceKlass); __ lwz(Rinstance_size, in_bytes(Klass::layout_helper_offset()), RinstanceKlass); --- 3658,3670 ---- __ lbzx(Rtags, Rindex, Rtags); __ cmpdi(CCR0, Rtags, JVM_CONSTANT_Class); __ bne(CCR0, Lslow_case); ! // Get instanceKlass __ sldi(Roffset, Rindex, LogBytesPerWord); ! __ load_resolved_klass_at_offset(Rcpool, Roffset, RinstanceKlass); // Make sure klass is fully initialized and get instance_size. __ lbz(Rscratch, in_bytes(InstanceKlass::init_state_offset()), RinstanceKlass); __ lwz(Rinstance_size, in_bytes(Klass::layout_helper_offset()), RinstanceKlass);
*** 3873,3885 **** __ b(Lresolved); // Extract target class from constant pool. __ bind(Lquicked); __ sldi(Roffset, Roffset, LogBytesPerWord); ! __ addi(Rcpool, Rcpool, sizeof(ConstantPool)); ! __ isync(); // Order load of specified Klass wrt. tags. ! __ ldx(RspecifiedKlass, Rcpool, Roffset); // Do the checkcast. __ bind(Lresolved); // Get value klass in RobjKlass. __ load_klass(RobjKlass, R17_tos); --- 3871,3881 ---- __ b(Lresolved); // Extract target class from constant pool. __ bind(Lquicked); __ sldi(Roffset, Roffset, LogBytesPerWord); ! __ load_resolved_klass_at_offset(Rcpool, Roffset, RspecifiedKlass); // Do the checkcast. __ bind(Lresolved); // Get value klass in RobjKlass. __ load_klass(RobjKlass, R17_tos);
*** 3937,3949 **** __ b(Lresolved); // Extract target class from constant pool. __ bind(Lquicked); __ sldi(Roffset, Roffset, LogBytesPerWord); ! __ addi(Rcpool, Rcpool, sizeof(ConstantPool)); ! __ isync(); // Order load of specified Klass wrt. tags. ! __ ldx(RspecifiedKlass, Rcpool, Roffset); // Do the checkcast. __ bind(Lresolved); // Get value klass in RobjKlass. __ load_klass(RobjKlass, R17_tos); --- 3933,3943 ---- __ b(Lresolved); // Extract target class from constant pool. __ bind(Lquicked); __ sldi(Roffset, Roffset, LogBytesPerWord); ! __ load_resolved_klass_at_offset(Rcpool, Roffset, RspecifiedKlass); // Do the checkcast. __ bind(Lresolved); // Get value klass in RobjKlass. __ load_klass(RobjKlass, R17_tos);
< prev index next >