comparison src/share/vm/code/vtableStubs.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 f95d63e2154a
children 746b070f5022
comparison
equal deleted inserted replaced
6724:36d1d483d5d6 6725:da91efe96a93
1 /* 1 /*
2 * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 1997, 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.
109 } 109 }
110 } 110 }
111 } 111 }
112 112
113 113
114 address VtableStubs::create_stub(bool is_vtable_stub, int vtable_index, methodOop method) { 114 address VtableStubs::create_stub(bool is_vtable_stub, int vtable_index, Method* method) {
115 assert(vtable_index >= 0, "must be positive"); 115 assert(vtable_index >= 0, "must be positive");
116 116
117 VtableStub* s = ShareVtableStubs ? lookup(is_vtable_stub, vtable_index) : NULL; 117 VtableStub* s = ShareVtableStubs ? lookup(is_vtable_stub, vtable_index) : NULL;
118 if (s == NULL) { 118 if (s == NULL) {
119 if (is_vtable_stub) { 119 if (is_vtable_stub) {
198 #ifndef PRODUCT 198 #ifndef PRODUCT
199 199
200 extern "C" void bad_compiled_vtable_index(JavaThread* thread, oop receiver, int index) { 200 extern "C" void bad_compiled_vtable_index(JavaThread* thread, oop receiver, int index) {
201 ResourceMark rm; 201 ResourceMark rm;
202 HandleMark hm; 202 HandleMark hm;
203 klassOop klass = receiver->klass(); 203 Klass* klass = receiver->klass();
204 instanceKlass* ik = instanceKlass::cast(klass); 204 InstanceKlass* ik = InstanceKlass::cast(klass);
205 klassVtable* vt = ik->vtable(); 205 klassVtable* vt = ik->vtable();
206 klass->print(); 206 ik->print();
207 fatal(err_msg("bad compiled vtable dispatch: receiver " INTPTR_FORMAT ", " 207 fatal(err_msg("bad compiled vtable dispatch: receiver " INTPTR_FORMAT ", "
208 "index %d (vtable length %d)", 208 "index %d (vtable length %d)",
209 (address)receiver, index, vt->length())); 209 (address)receiver, index, vt->length()));
210 } 210 }
211 211