never@1445: /* mikael@6198: * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. twisti@1814: * Copyright 2008, 2010 Red Hat, Inc. never@1445: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. never@1445: * never@1445: * This code is free software; you can redistribute it and/or modify it never@1445: * under the terms of the GNU General Public License version 2 only, as never@1445: * published by the Free Software Foundation. never@1445: * never@1445: * This code is distributed in the hope that it will be useful, but WITHOUT never@1445: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or never@1445: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License never@1445: * version 2 for more details (a copy is included in the LICENSE file that never@1445: * accompanied this code). never@1445: * never@1445: * You should have received a copy of the GNU General Public License version never@1445: * 2 along with this work; if not, write to the Free Software Foundation, never@1445: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. never@1445: * trims@1907: * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA trims@1907: * or visit www.oracle.com if you need additional information or have any trims@1907: * questions. never@1445: * never@1445: */ never@1445: stefank@2314: #ifndef CPU_ZERO_VM_ENTRYFRAME_ZERO_HPP stefank@2314: #define CPU_ZERO_VM_ENTRYFRAME_ZERO_HPP stefank@2314: stefank@2314: #include "runtime/javaCalls.hpp" stefank@2314: #include "stack_zero.hpp" stefank@2314: never@1445: // | ... | never@1445: // +--------------------+ ------------------ never@1445: // | parameter n-1 | low addresses never@1445: // | ... | never@1445: // | parameter 0 | never@1445: // | call_wrapper | never@1445: // | frame_type | never@1445: // | next_frame | high addresses never@1445: // +--------------------+ ------------------ never@1445: // | ... | never@1445: never@1445: class EntryFrame : public ZeroFrame { never@1445: private: never@1445: EntryFrame() : ZeroFrame() { never@1445: ShouldNotCallThis(); never@1445: } never@1445: never@1445: protected: never@1445: enum Layout { never@1445: call_wrapper_off = jf_header_words, never@1445: header_words never@1445: }; never@1445: never@1445: public: twisti@1814: static EntryFrame *build(const intptr_t* parameters, never@1445: int parameter_words, twisti@1814: JavaCallWrapper* call_wrapper, twisti@1814: TRAPS); never@1445: public: omajid@5497: JavaCallWrapper **call_wrapper() const { omajid@5497: return (JavaCallWrapper **) addr_of_word(call_wrapper_off); never@1445: } never@1445: never@1445: public: never@1445: void identify_word(int frame_index, never@1445: int offset, never@1445: char* fieldbuf, never@1445: char* valuebuf, never@1445: int buflen) const; never@1445: }; stefank@2314: stefank@2314: #endif // CPU_ZERO_VM_ENTRYFRAME_ZERO_HPP