comparison src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp @ 6725:da91efe96a93

6964458: Reimplement class meta-data storage to use native memory Summary: Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland Contributed-by: jmasa <jon.masamitsu@oracle.com>, stefank <stefan.karlsson@oracle.com>, mgerdin <mikael.gerdin@oracle.com>, never <tom.rodriguez@oracle.com>
author coleenp
date Sat, 01 Sep 2012 13:25:18 -0400
parents 069ab3f976d3
children 8e47bac5643a
comparison
equal deleted inserted replaced
6724:36d1d483d5d6 6725:da91efe96a93
1 /* 1 /*
2 * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 1999, 2012, 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.
184 ld_ptr(klass, in_bytes(Klass::prototype_header_offset()), t1); 184 ld_ptr(klass, in_bytes(Klass::prototype_header_offset()), t1);
185 } else { 185 } else {
186 set((intx)markOopDesc::prototype(), t1); 186 set((intx)markOopDesc::prototype(), t1);
187 } 187 }
188 st_ptr(t1, obj, oopDesc::mark_offset_in_bytes()); 188 st_ptr(t1, obj, oopDesc::mark_offset_in_bytes());
189 if (UseCompressedOops) { 189 if (UseCompressedKlassPointers) {
190 // Save klass 190 // Save klass
191 mov(klass, t1); 191 mov(klass, t1);
192 encode_heap_oop_not_null(t1); 192 encode_heap_oop_not_null(t1);
193 stw(t1, obj, oopDesc::klass_offset_in_bytes()); 193 stw(t1, obj, oopDesc::klass_offset_in_bytes());
194 } else { 194 } else {
195 st_ptr(klass, obj, oopDesc::klass_offset_in_bytes()); 195 st_ptr(klass, obj, oopDesc::klass_offset_in_bytes());
196 } 196 }
197 if (len->is_valid()) st(len, obj, arrayOopDesc::length_offset_in_bytes()); 197 if (len->is_valid()) {
198 else if (UseCompressedOops) { 198 st(len, obj, arrayOopDesc::length_offset_in_bytes());
199 } else if (UseCompressedKlassPointers) {
200 // otherwise length is in the class gap
199 store_klass_gap(G0, obj); 201 store_klass_gap(G0, obj);
200 } 202 }
201 } 203 }
202 204
203 205