1 /*
 2  * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
 3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 4  *
 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
 7  * published by the Free Software Foundation.  Oracle designates this
 8  * particular file as subject to the "Classpath" exception as provided
 9  * by Oracle in the LICENSE file that accompanied this code.
10  *
11  * This code is distributed in the hope that it will be useful, but WITHOUT
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14  * version 2 for more details (a copy is included in the LICENSE file that
15  * accompanied this code).
16  *
17  * You should have received a copy of the GNU General Public License version
18  * 2 along with this work; if not, write to the Free Software Foundation,
19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20  *
21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22  * or visit www.oracle.com if you need additional information or have any
23  * questions.
24  */
25 
26 package jdk.internal.vm;
27 
28 public final class StackChunk {
29     public static void init() {}
30 
31     public static final byte FLAG_HAS_INTERPRETED_FRAMES = 1 << 2;
32 
33     private Continuation cont; // must not be accessed by Java code, as this oop's processing is essential for the chunk's GC protocol
34     private StackChunk parent;
35     private int size; // in words
36     private int sp; // in words
37     private int argsize; // bottom stack-passed arguments, in words
38     private byte flags;
39     private long pc;
40 
41     private int gcSP;
42     private long markCycle;
43 
44     private int maxSize; // size when fully thawed on stack
45     private int numFrames;
46     private int numOops;
47    
48    // the stack itself is appended here by the VM
49 
50     public StackChunk parent() { return parent; }
51     public int size()          { return size; }
52     public int sp()            { return sp; }
53     public int argsize()       { return argsize; }
54     public int maxSize()       { return maxSize; }
55     public boolean isEmpty()   { return sp >= (size - argsize); }
56     public boolean isFlag(byte flag) { return (flags & flag) != 0; }
57  }