comparison src/main/gov/nasa/jpf/jvm/bytecode/INVOKEDYNAMIC.java @ 28:7be90179bb3b

Provided support for double colon operator used for lamabda expressions. Fixed a bug related to generating names for funcation object classes (by supporting double colon operator, a new stragety needed to generate unique names for function objects. To achive that the bootstrap ids are incorporated into names). Finally modified the method that retrieves the SAM from functional interfaces.
author nastaran <nastaran.shafiei@gmail.com>
date Thu, 25 Jun 2015 13:20:50 -0700
parents db918c531e6d
children 820b89dd6c97
comparison
equal deleted inserted replaced
27:8aded593a50f 28:7be90179bb3b
114 BootstrapMethodInfo bmi = enclosingClass.getBootstrapMethodInfo(bootstrapMethodIndex); 114 BootstrapMethodInfo bmi = enclosingClass.getBootstrapMethodInfo(bootstrapMethodIndex);
115 115
116 VM vm = VM.getVM(); 116 VM vm = VM.getVM();
117 FunctionObjectFactory funcObjFactory = vm.getFunctionObjectFacotry(); 117 FunctionObjectFactory funcObjFactory = vm.getFunctionObjectFacotry();
118 118
119 String samUniqueName = samMethodName + bmi.getSamDescriptor();
120 Object[] freeVariableValues = frame.getArgumentsValues(ti, freeVariableTypes); 119 Object[] freeVariableValues = frame.getArgumentsValues(ti, freeVariableTypes);
121 120
122 funcObjRef = funcObjFactory.getFunctionObject(ti, fiClassInfo, samUniqueName, bmi, freeVariableTypeNames, freeVariableValues); 121 funcObjRef = funcObjFactory.getFunctionObject(bootstrapMethodIndex, ti, fiClassInfo, samMethodName, bmi, freeVariableTypeNames, freeVariableValues);
123 lastFuncObj = ti.getHeap().get(funcObjRef); 122 lastFuncObj = ti.getHeap().get(funcObjRef);
124 } 123 }
125 124
126 frame.pop(freeVariableTypes.length); 125 frame.pop(freeVariableTypes.length);
127 frame.pushRef(funcObjRef); 126 frame.pushRef(funcObjRef);