1 /*
2 * Copyright (c) 2002, 2003, 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 *
45 sun.jvm.hotspot.oops.Field saField) {
46 super(vm, declaringType);
47 this.saField = saField;
48 getParser();
49 }
50
51 private void getParser() {
52 if (signatureParser == null) {
53 Symbol sig1 = saField.getSignature();
54 signature = sig1.asString();
55 signatureParser = new JNITypeParser(signature);
56 }
57 }
58
59 sun.jvm.hotspot.oops.Field ref() {
60 return saField;
61 }
62
63 // get the value of static field
64 ValueImpl getValue() {
65 return getValue(saField.getFieldHolder());
66 }
67
68 // get the value of this Field from a specific Oop
69 ValueImpl getValue(Oop target) {
70 ValueImpl valueImpl;
71 sun.jvm.hotspot.oops.Field saField = (sun.jvm.hotspot.oops.Field) ref();
72 sun.jvm.hotspot.oops.FieldType ft = saField.getFieldType();
73 if (ft.isArray()) {
74 sun.jvm.hotspot.oops.OopField of = (sun.jvm.hotspot.oops.OopField)saField;
75 valueImpl = (ArrayReferenceImpl) vm.arrayMirror((Array)of.getValue(target));
76 } else if (ft.isObject()) {
77 sun.jvm.hotspot.oops.OopField of = (sun.jvm.hotspot.oops.OopField)saField;
78 valueImpl = (ObjectReferenceImpl) vm.objectMirror(of.getValue(target));
79 } else if (ft.isByte()) {
80 sun.jvm.hotspot.oops.ByteField bf = (sun.jvm.hotspot.oops.ByteField)saField;
81 valueImpl = (ByteValueImpl) vm.mirrorOf(bf.getValue(target));
82 } else if (ft.isChar()) {
83 sun.jvm.hotspot.oops.CharField cf = (sun.jvm.hotspot.oops.CharField)saField;
84 valueImpl = (CharValueImpl) vm.mirrorOf(cf.getValue(target));
85 } else if (ft.isDouble()) {
|
1 /*
2 * Copyright (c) 2002, 2011, 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 *
45 sun.jvm.hotspot.oops.Field saField) {
46 super(vm, declaringType);
47 this.saField = saField;
48 getParser();
49 }
50
51 private void getParser() {
52 if (signatureParser == null) {
53 Symbol sig1 = saField.getSignature();
54 signature = sig1.asString();
55 signatureParser = new JNITypeParser(signature);
56 }
57 }
58
59 sun.jvm.hotspot.oops.Field ref() {
60 return saField;
61 }
62
63 // get the value of static field
64 ValueImpl getValue() {
65 return getValue(saField.getFieldHolder().getJavaMirror());
66 }
67
68 // get the value of this Field from a specific Oop
69 ValueImpl getValue(Oop target) {
70 ValueImpl valueImpl;
71 sun.jvm.hotspot.oops.Field saField = (sun.jvm.hotspot.oops.Field) ref();
72 sun.jvm.hotspot.oops.FieldType ft = saField.getFieldType();
73 if (ft.isArray()) {
74 sun.jvm.hotspot.oops.OopField of = (sun.jvm.hotspot.oops.OopField)saField;
75 valueImpl = (ArrayReferenceImpl) vm.arrayMirror((Array)of.getValue(target));
76 } else if (ft.isObject()) {
77 sun.jvm.hotspot.oops.OopField of = (sun.jvm.hotspot.oops.OopField)saField;
78 valueImpl = (ObjectReferenceImpl) vm.objectMirror(of.getValue(target));
79 } else if (ft.isByte()) {
80 sun.jvm.hotspot.oops.ByteField bf = (sun.jvm.hotspot.oops.ByteField)saField;
81 valueImpl = (ByteValueImpl) vm.mirrorOf(bf.getValue(target));
82 } else if (ft.isChar()) {
83 sun.jvm.hotspot.oops.CharField cf = (sun.jvm.hotspot.oops.CharField)saField;
84 valueImpl = (CharValueImpl) vm.mirrorOf(cf.getValue(target));
85 } else if (ft.isDouble()) {
|