equal
deleted
inserted
replaced
1 /* |
1 /* |
2 * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1997, 2013, 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. |
650 } |
650 } |
651 |
651 |
652 // Return whether the frame is in the VM or os indicating a Hotspot problem. |
652 // Return whether the frame is in the VM or os indicating a Hotspot problem. |
653 // Otherwise, it's likely a bug in the native library that the Java code calls, |
653 // Otherwise, it's likely a bug in the native library that the Java code calls, |
654 // hopefully indicating where to submit bugs. |
654 // hopefully indicating where to submit bugs. |
655 static void print_C_frame(outputStream* st, char* buf, int buflen, address pc) { |
655 void frame::print_C_frame(outputStream* st, char* buf, int buflen, address pc) { |
656 // C/C++ frame |
656 // C/C++ frame |
657 bool in_vm = os::address_is_in_vm(pc); |
657 bool in_vm = os::address_is_in_vm(pc); |
658 st->print(in_vm ? "V" : "C"); |
658 st->print(in_vm ? "V" : "C"); |
659 |
659 |
660 int offset; |
660 int offset; |
1095 if (oop_adr == NULL) { |
1095 if (oop_adr == NULL) { |
1096 guarantee(oop_adr != NULL, "bad register save location"); |
1096 guarantee(oop_adr != NULL, "bad register save location"); |
1097 return NULL; |
1097 return NULL; |
1098 } |
1098 } |
1099 oop r = *oop_adr; |
1099 oop r = *oop_adr; |
1100 assert(Universe::heap()->is_in_or_null(r), err_msg("bad receiver: " INTPTR_FORMAT " (" INTX_FORMAT ")", (intptr_t) r, (intptr_t) r)); |
1100 assert(Universe::heap()->is_in_or_null(r), err_msg("bad receiver: " INTPTR_FORMAT " (" INTX_FORMAT ")", (void *) r, (void *) r)); |
1101 return r; |
1101 return r; |
1102 } |
1102 } |
1103 |
1103 |
1104 |
1104 |
1105 oop* frame::oopmapreg_to_location(VMReg reg, const RegisterMap* reg_map) const { |
1105 oop* frame::oopmapreg_to_location(VMReg reg, const RegisterMap* reg_map) const { |
1226 } |
1226 } |
1227 |
1227 |
1228 |
1228 |
1229 void frame::ZapDeadClosure::do_oop(oop* p) { |
1229 void frame::ZapDeadClosure::do_oop(oop* p) { |
1230 if (TraceZapDeadLocals) tty->print_cr("zapping @ " INTPTR_FORMAT " containing " INTPTR_FORMAT, p, (address)*p); |
1230 if (TraceZapDeadLocals) tty->print_cr("zapping @ " INTPTR_FORMAT " containing " INTPTR_FORMAT, p, (address)*p); |
1231 // Need cast because on _LP64 the conversion to oop is ambiguous. Constant |
1231 *p = cast_to_oop<intptr_t>(0xbabebabe); |
1232 // can be either long or int. |
|
1233 *p = (oop)(int)0xbabebabe; |
|
1234 } |
1232 } |
1235 frame::ZapDeadClosure frame::_zap_dead; |
1233 frame::ZapDeadClosure frame::_zap_dead; |
1236 |
1234 |
1237 void frame::zap_dead_locals(JavaThread* thread, const RegisterMap* map) { |
1235 void frame::zap_dead_locals(JavaThread* thread, const RegisterMap* map) { |
1238 assert(thread == Thread::current(), "need to synchronize to do this to another thread"); |
1236 assert(thread == Thread::current(), "need to synchronize to do this to another thread"); |