src/java.base/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/java.base/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java	Fri Jan 16 19:37:28 2015
--- new/src/java.base/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java	Fri Jan 16 19:37:27 2015

*** 626,643 **** --- 626,646 ---- mv.visitAnnotation("Ljava/lang/invoke/LambdaForm$Hidden;", true); // Mark this method as a compiled LambdaForm mv.visitAnnotation("Ljava/lang/invoke/LambdaForm$Compiled;", true); + if (PROFILE_GWT && lambdaForm.isGWT) { + mv.visitAnnotation("Ljava/lang/invoke/LambdaForm$IgnoreProfile;", true); + } + if (lambdaForm.forceInline) { // Force inlining of this invoker method. mv.visitAnnotation("Ljava/lang/invoke/ForceInline;", true); } else { mv.visitAnnotation("Ljava/lang/invoke/DontInline;", true); } // iterate over the form's names, generating bytecode instructions for each // start iterating at the first name following the arguments Name onStack = null; for (int i = lambdaForm.arity; i < lambdaForm.names.length; i++) { Name name = lambdaForm.names[i];
*** 1003,1012 **** --- 1006,1020 ---- Label L_done = new Label(); // load test result emitPushArgument(selectAlternativeName, 0); + if (PROFILE_GWT) { + emitPushArgument(selectAlternativeName, 3); + mv.visitMethodInsn(Opcodes.INVOKESTATIC, MHI, "profileBranch", "(Z[I)Z", false); + } + // if_icmpne L_fallback mv.visitJumpInsn(Opcodes.IFEQ, L_fallback); // invoke selectAlternativeName.arguments[1] Class<?>[] preForkClasses = localClasses.clone();

src/java.base/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File