Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/StackValueCollection.java
41161 views
1
/*
2
* Copyright (c) 2001, 2020, 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.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*
23
*/
24
25
package sun.jvm.hotspot.runtime;
26
27
import java.util.*;
28
29
import sun.jvm.hotspot.debugger.*;
30
import sun.jvm.hotspot.types.*;
31
32
public class StackValueCollection {
33
private List<StackValue> list;
34
35
public StackValueCollection() { list = new ArrayList<>(); }
36
public StackValueCollection(int length) { list = new ArrayList<>(length); }
37
38
public void add(StackValue val) { list.add(val); }
39
public int size() { return list.size(); }
40
public boolean isEmpty() { return (size() == 0); }
41
public StackValue get(int i) { return (StackValue) list.get(i); }
42
43
// Get typed locals/expressions
44
// FIXME: must figure out whether word swapping is necessary on x86
45
public boolean booleanAt(int slot) { return (int)get(slot).getInteger() != 0; }
46
public byte byteAt(int slot) { return (byte) get(slot).getInteger(); }
47
public char charAt(int slot) { return (char) get(slot).getInteger(); }
48
public short shortAt(int slot) { return (short) get(slot).getInteger(); }
49
public int intAt(int slot) { return (int) get(slot).getInteger(); }
50
public long longAt(int slot) { return VM.getVM().buildLongFromIntsPD((int) get(slot).getInteger(),
51
(int) get(slot+1).getInteger()); }
52
53
public OopHandle oopHandleAt(int slot) {
54
StackValue sv = get(slot);
55
if (sv.getType() == BasicType.getTConflict()) {
56
throw new WrongTypeException("Conflict type");
57
}
58
return sv.getObject();
59
}
60
61
public float floatAt(int slot) { return Float.intBitsToFloat(intAt(slot)); }
62
public double doubleAt(int slot) { return Double.longBitsToDouble(longAt(slot)); }
63
}
64
65