6939182: Zero JNI handles fix

Zero will exit with an error when invoked with -Xcheck:jni.

Reviewed-by: twisti, kamg
This commit is contained in:
Gary Benson 2010-04-30 04:27:25 -07:00 committed by Christian Thalinger
parent 61b9d428d1
commit 55457c9cc7
8 changed files with 59 additions and 35 deletions

View file

@ -1,6 +1,6 @@
/*
* Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2007, 2008, 2009 Red Hat, Inc.
* Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -44,14 +44,14 @@ frame frame::sender_for_entry_frame(RegisterMap *map) const {
"sender should be next Java frame");
map->clear();
assert(map->include_argument_oops(), "should be set by clear");
return frame(sender_sp(), sp() + 1);
return frame(zeroframe()->next(), sender_sp());
}
frame frame::sender_for_nonentry_frame(RegisterMap *map) const {
assert(zeroframe()->is_interpreter_frame() ||
zeroframe()->is_shark_frame() ||
zeroframe()->is_fake_stub_frame(), "wrong type of frame");
return frame(sender_sp(), sp() + 1);
return frame(zeroframe()->next(), sender_sp());
}
frame frame::sender(RegisterMap* map) const {
@ -172,8 +172,8 @@ void frame::zero_print_on_error(int frame_index,
char *valuebuf = buf + buflen;
// Print each word of the frame
for (intptr_t *addr = fp(); addr <= sp(); addr++) {
int offset = sp() - addr;
for (intptr_t *addr = sp(); addr <= fp(); addr++) {
int offset = fp() - addr;
// Fill in default values, then try and improve them
snprintf(fieldbuf, buflen, "word[%d]", offset);