Mercurial > hg > truffle
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 |