Benchmarks are triggered by bck2brwsr.runBenchmarks.browsers property, it should contain list of browsers to run benchmarks in.
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.
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.
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).
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.
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
27 package org.apidesign.javap;
33 * Returns java type signature.
35 * @author Sucheta Dambalkar
37 public class TypeSignature {
39 String parameters = null;
40 String returntype = null;
41 String fieldtype = null;
42 int argumentlength = 0;
44 public TypeSignature(String JVMSignature){
46 if(JVMSignature != null){
47 if(JVMSignature.indexOf("(") == -1){
48 //This is a field type.
49 this.fieldtype = getFieldTypeSignature(JVMSignature);
51 String parameterdes = null;
52 if((JVMSignature.indexOf(")")-1) > (JVMSignature.indexOf("("))){
53 //Get parameter signature.
55 JVMSignature.substring(JVMSignature.indexOf("(")+1,
56 JVMSignature.indexOf(")"));
57 this.parameters = getParametersHelper(parameterdes);
58 }else this.parameters = "()";
59 //Get return type signature.
60 String returndes = JVMSignature.substring(JVMSignature.lastIndexOf(")")+1);
61 this.returntype = getReturnTypeHelper(returndes);
67 * Returns java type signature of a field.
69 public String getFieldTypeSignature(String fielddes){
70 if(fielddes.startsWith("L")){
71 return(getObjectType(fielddes));
72 }else if(fielddes.startsWith("[")){
73 return(getArrayType(fielddes));
75 return(getBaseType(fielddes));
79 * Returns java type signature of a parameter.
81 public String getParametersHelper(String parameterdes){
82 Vector parameters = new Vector();
87 while(parameterdes != null){
89 if(parameterdes.startsWith("L")){
90 //parameter is a object.
91 startindex = parameterdes.indexOf("L");
92 endindex = parameterdes.indexOf(";");
93 if(startindex < parameterdes.length()) {
94 if(endindex == parameterdes.length()-1) {
96 param = parameterdes.substring(startindex);
98 }else if(endindex+1 < parameterdes.length()){
100 param = parameterdes.substring(startindex, endindex+1);
101 parameterdes = parameterdes.substring(endindex+1);
104 parameters.add(getObjectType(param));
106 }else if(parameterdes.startsWith("[")){
107 //parameter is an array.
108 String componentType = "";
112 if(st < parameterdes.length()){
113 if(parameterdes.charAt(st) == '['){
123 if(enddim+1 < parameterdes.length()){
124 /* Array dimension.*/
125 param = parameterdes.substring(0,enddim+1);
129 int stotherparam = param.lastIndexOf("[")+1;
131 if(stotherparam < parameterdes.length()){
132 componentType = parameterdes.substring(stotherparam);
135 if(componentType.startsWith("L")){
136 //parameter is array of objects.
137 startindex = parameterdes.indexOf("L");
138 endindex = parameterdes.indexOf(";");
140 if(endindex == parameterdes.length()-1){
142 param += parameterdes.substring(startindex);
144 }else if(endindex+1 < parameterdes.length()){
146 param += parameterdes.substring(startindex, endindex+1);
147 parameterdes = parameterdes.substring(endindex+1);
150 //parameter is array of base type.
151 if(componentType.length() == 1){
153 param += componentType;
156 else if (componentType.length() > 1) {
158 param += componentType.substring(0,1);
159 parameterdes = componentType.substring(1);
162 parameters.add(getArrayType(param));
167 //parameter is of base type.
168 if(parameterdes.length() == 1){
170 param = parameterdes;
173 else if (parameterdes.length() > 1) {
175 param = parameterdes.substring(0,1);
176 parameterdes = parameterdes.substring(1);
178 parameters.add(getBaseType(param));
182 /* number of arguments of a method.*/
183 argumentlength = parameters.size();
185 /* java type signature.*/
186 String parametersignature = "(";
189 for(i = 0; i < parameters.size(); i++){
190 parametersignature += (String)parameters.elementAt(i);
191 if(i != parameters.size()-1){
192 parametersignature += ", ";
195 parametersignature += ")";
196 return parametersignature;
200 * Returns java type signature for a return type.
202 public String getReturnTypeHelper(String returndes){
203 return getFieldTypeSignature(returndes);
207 * Returns java type signature for a base type.
209 public String getBaseType(String baseType){
210 if(baseType != null){
211 if(baseType.equals("B")) return "byte";
212 else if(baseType.equals("C")) return "char";
213 else if(baseType.equals("D")) return "double";
214 else if(baseType.equals("F")) return "float";
215 else if(baseType.equals("I")) return "int";
216 else if(baseType.equals("J")) return "long";
217 else if(baseType.equals("S")) return "short";
218 else if(baseType.equals("Z")) return "boolean";
219 else if(baseType.equals("V")) return "void";
225 * Returns java type signature for a object type.
227 public String getObjectType(String JVMobjectType) {
228 String objectType = "";
229 int startindex = JVMobjectType.indexOf("L")+1;
230 int endindex = JVMobjectType.indexOf(";");
231 if((startindex != -1) && (endindex != -1)){
232 if((startindex < JVMobjectType.length()) && (endindex < JVMobjectType.length())){
233 objectType = JVMobjectType.substring(startindex, endindex);
235 objectType = objectType.replace('/','.');
242 * Returns java type signature for array type.
244 public String getArrayType(String arrayType) {
245 if(arrayType != null){
246 String dimention = "";
248 while(arrayType.indexOf("[") != -1){
251 int startindex = arrayType.indexOf("[")+1;
252 if(startindex <= arrayType.length()){
253 arrayType = arrayType.substring(startindex);
257 String componentType = "";
258 if(arrayType.startsWith("L")){
259 componentType = getObjectType(arrayType);
261 componentType = getBaseType(arrayType);
263 return componentType+dimention;
269 * Returns java type signature for parameters.
271 public String getParameters(){
276 * Returns java type signature for return type.
278 public String getReturnType(){
283 * Returns java type signature for field type.
285 public String getFieldType(){
290 * Return number of arguments of a method.
292 public int getArgumentlength(){
293 return argumentlength;