2 * Copyright (C) 2014, United States Government, as represented by the
3 * Administrator of the National Aeronautics and Space Administration.
6 * The Java Pathfinder core (jpf-core) platform is licensed under the
7 * Apache License, Version 2.0 (the "License"); you may not use this file except
8 * in compliance with the License. You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0.
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
19 package gov.nasa.jpf.vm;
22 * type annotation for local vars and resource vars
24 public class VariableAnnotationInfo extends AbstractTypeAnnotationInfo {
26 protected long[] scopeEntries;
28 public VariableAnnotationInfo (AnnotationInfo base, int targetType, short[] typePath, long[] scopeEntries) {
29 super( base, targetType, typePath);
31 this.scopeEntries = scopeEntries;
34 public int getNumberOfScopeEntries(){
35 return scopeEntries.length;
38 public int getStartPC (int idx){
39 return (int)(scopeEntries[idx] >> 32) & 0xffff;
42 public int getLength (int idx){
43 return (int)(scopeEntries[idx] >> 16) & 0xffff;
46 public int getEndPC (int idx){
47 long e = scopeEntries[idx];
49 int startPC = (int)(e >> 32) & 0xffff;
50 int len = (int)(e >> 16) & 0xffff;
55 public int getSlotIndex (int idx){
56 return (int)scopeEntries[idx] & 0xffff;
61 protected void addArgs(StringBuilder sb){
63 for (int i=0; i<scopeEntries.length;i++){
64 long e = scopeEntries[i];
65 int slotIndex = (int)(e & 0xffff);
66 int length = (int)((e >> 16) & 0xffff);
67 int startPc = (int)((e >> 32) & 0xffff);
74 sb.append( Integer.toString(startPc));
76 sb.append( Integer.toString(startPc + length-1));
82 // 2do - perhaps we should map to LocalVarInfos here (in case we have them), but
83 // this would probably belong to LocalVarInfo (turning them into full InfoObjects)