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 |