Package org.objectweb.asm

Examples of org.objectweb.asm.Handle


                                       TypedValue lambda,
                                       EntityManagerBackdoor emSource) throws TypedValueVisitorException
   {
      MethodAnalysisResults analysis;
      String className = getLambdaClassName(lambda);
      Handle methodHandle = getLambdaMethodHandle(lambda);
      if (className != null)
      {
         if (!aggregateIntegerAnalysis.containsKey(className)) return null;
         analysis = aggregateIntegerAnalysis.get(className);
      }
      else if (methodHandle != null)
      {
         analysis = runtimeAnalyzer.analyzeLambda(methodHandle.getOwner(), methodHandle.getName(), methodHandle.getDesc());
         if (analysis == null) return null;
      }
      else
         return null;
      if (!doRuntimeCheckForSideEffects(analysis)) return null;
View Full Code Here


                                       TypedValue lambda,
                                       EntityManagerBackdoor emSource) throws TypedValueVisitorException
   {
      MethodAnalysisResults analysis;
      String className = getLambdaClassName(lambda);
      Handle methodHandle = getLambdaMethodHandle(lambda);
      if (className != null)
      {
         if (!aggregateIntegerAnalysis.containsKey(className)) return null;
         analysis = aggregateIntegerAnalysis.get(className);
      }
      else if (methodHandle != null)
      {
         analysis = runtimeAnalyzer.analyzeLambda(methodHandle.getOwner(), methodHandle.getName(), methodHandle.getDesc());
         if (analysis == null) return null;
      }
      else
         return null;
      if (!doRuntimeCheckForSideEffects(analysis)) return null;
View Full Code Here

            if (!"java/lang/invoke/LambdaMetafactory".equals(invokeInsn.bsm.getOwner())
                  || !"altMetafactory".equals(invokeInsn.bsm.getName())
                  || !"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;".equals(invokeInsn.bsm.getDesc()))
               throw new AnalyzerException(insn, "Unknown invokedynamic " + invokeInsn.bsm + " encountered");
            // Return the Lambda creation result
            Handle lambdaMethod = (Handle)invokeInsn.bsmArgs[1];
            Type functionalInterface = Type.getReturnType(invokeInsn.desc);
            return new LambdaFactory(functionalInterface, lambdaMethod);
         }
         case MULTIANEWARRAY:
         default:
View Full Code Here

  }

  @Test
  public void testInvokeDynamicInsn() {
    testInstructionBetweenFrames(new InvokeDynamicInsnNode("foo", "()V",
        new Handle(0, null, null, null)));
  }
View Full Code Here

            buf.append("Type.getType(\"");
            buf.append(((Type) cst).getDescriptor());
            buf.append("\")");
        } else if (cst instanceof Handle) {
            buf.append("new Handle(");
            Handle h = (Handle) cst;
            buf.append("Opcodes.").append(HANDLE_TAG[h.getTag()])
                    .append(", \"");
            buf.append(h.getOwner()).append("\", \"");
            buf.append(h.getName()).append("\", \"");
            buf.append(h.getDesc()).append("\")");
        } else if (cst instanceof Byte) {
            buf.append("new Byte((byte)").append(cst).append(')');
        } else if (cst instanceof Boolean) {
            buf.append(((Boolean) cst).booleanValue() ? "Boolean.TRUE"
                    : "Boolean.FALSE");
View Full Code Here

                return newMethodType(t.getDescriptor());
            } else { // s == primitive type or array
                return newClass(t.getDescriptor());
            }
        } else if (cst instanceof Handle) {
            Handle h = (Handle) cst;
            return newHandle(h.getTag(), h.getOwner(), h.getName(), h.getDesc());
        } else {
            throw new IllegalArgumentException("value " + cst);
        }
    }
View Full Code Here

                case 'y':
                    d = c1.strVal1.compareTo(c2.strVal1);
                    if (d == 0) {
                        d = c1.strVal2.compareTo(c2.strVal2);
                        if (d == 0) {
                            Handle bsm1 = (Handle) c1.objVal3;
                            Handle bsm2 = (Handle) c2.objVal3;
                            d = compareHandle(bsm1, bsm2);
                            if (d == 0) {
                                d = compareObjects(c1.objVals, c2.objVals);
                            }
                        }
View Full Code Here

                int tag = Integer.parseInt(val.substring(tagIndex + 1,
                        val.length() - 1));
                String owner = val.substring(0, dotIndex);
                String name = val.substring(dotIndex + 1, descIndex);
                String desc = val.substring(descIndex, tagIndex - 1);
                return new Handle(tag, owner, name, desc);

            } catch (RuntimeException e) {
                throw new SAXException("Malformed handle " + val, e);
            }
        }
View Full Code Here

        }

        @Override
        public final void end(final String element) {
            ArrayList<?> bsmArgs = (ArrayList<?>) pop();
            Handle bsm = (Handle) pop();
            String desc = (String) pop();
            String name = (String) pop();
            getCodeVisitor().visitInvokeDynamicInsn(name, desc, bsm,
                    bsmArgs.toArray());
        }
View Full Code Here

            if (!"java/lang/invoke/LambdaMetafactory".equals(invokeInsn.bsm.getOwner())
                  || !"altMetafactory".equals(invokeInsn.bsm.getName())
                  || !"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;".equals(invokeInsn.bsm.getDesc()))
               throw new AnalyzerException(insn, "Unknown invokedynamic " + invokeInsn.bsm + " encountered");
            // Return the Lambda creation result
            Handle lambdaMethod = (Handle)invokeInsn.bsmArgs[1];
            Type functionalInterface = Type.getReturnType(invokeInsn.desc);
            return new LambdaFactory(functionalInterface, lambdaMethod, new ArrayList<>((List<TypedValue>)values));
         }
         case MULTIANEWARRAY:
         default:
View Full Code Here

TOP

Related Classes of org.objectweb.asm.Handle

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.