/*
* Copyright 2008, 2009, 2010 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
#ifndef CPU_ZERO_VM_STACK_ZERO_HPP
#define CPU_ZERO_VM_STACK_ZERO_HPP
class ZeroStack {
private:
private:
public:
}
bool needs_setup() const {
}
}
void teardown() {
}
return _sp;
}
}
int total_words() const {
}
int available_words() const {
}
}
return *(_sp++);
}
}
int shadow_pages_size() const {
return _shadow_pages_size;
}
public:
static void handle_overflow(TRAPS);
public:
void zap(int c) PRODUCT_RETURN;
public:
static ByteSize base_offset() {
}
static ByteSize top_offset() {
}
}
};
class EntryFrame;
class InterpreterFrame;
class SharkFrame;
class FakeStubFrame;
//
// | ... |
// +--------------------+ ------------------
// | ... | low addresses
// | frame_type |
// | next_frame | high addresses
// +--------------------+ ------------------
// | ... |
class ZeroFrame {
friend class frame;
friend class ZeroStackPrinter;
protected:
ZeroFrame() {
}
enum Layout {
};
enum FrameType {
ENTRY_FRAME = 1,
};
protected:
}
return *addr_of_word(offset);
}
public:
}
protected:
}
public:
bool is_entry_frame() const {
return type() == ENTRY_FRAME;
}
bool is_interpreter_frame() const {
return type() == INTERPRETER_FRAME;
}
bool is_shark_frame() const {
return type() == SHARK_FRAME;
}
bool is_fake_stub_frame() const {
return type() == FAKE_STUB_FRAME;
}
public:
EntryFrame *as_entry_frame() const {
return (EntryFrame *) this;
}
InterpreterFrame *as_interpreter_frame() const {
return (InterpreterFrame *) this;
}
SharkFrame *as_shark_frame() const {
return (SharkFrame *) this;
}
FakeStubFrame *as_fake_stub_frame() const {
return (FakeStubFrame *) this;
}
public:
void identify_word(int frame_index,
int offset,
char* fieldbuf,
char* valuebuf,
int buflen) const;
protected:
void identify_vp_word(int frame_index,
char* fieldbuf,
int buflen) const;
};
#endif // CPU_ZERO_VM_STACK_ZERO_HPP