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

src/java.base/share/classes/java/lang/invoke/LambdaFormBuffer.java

Print this page
rev 10607 : imported patch 19.8057042.editor.0
rev 10609 : 8057922: Improve LambdaForm sharing by using LambdaFormEditor more extensively
Reviewed-by: vlivanov, ?
Contributed-by: john.r.rose@oracle.com

*** 57,67 **** if (result == LAST_RESULT) result = length - 1; if (result >= 0 && names[result].type != V_TYPE) resultName = names[result]; } ! LambdaForm lambdaForm() { assert(!inTrans()); // need endEdit call to tidy things up return new LambdaForm(debugName, arity, nameArray(), resultIndex()); } Name name(int i) { --- 57,67 ---- if (result == LAST_RESULT) result = length - 1; if (result >= 0 && names[result].type != V_TYPE) resultName = names[result]; } ! private LambdaForm lambdaForm() { assert(!inTrans()); // need endEdit call to tidy things up return new LambdaForm(debugName, arity, nameArray(), resultIndex()); } Name name(int i) {
*** 274,284 **** assert(name == null || lastIndexOf(name) >= 0); resultName = name; } /** Finish a transaction. */ ! void endEdit() { assert(verifyFirstChange()); // Assuming names have been changed pairwise from originalNames[i] to names[i], // update arguments to ensure referential integrity. for (int i = Math.max(firstChange, arity); i < length; i++) { Name name = names[i]; --- 274,284 ---- assert(name == null || lastIndexOf(name) >= 0); resultName = name; } /** Finish a transaction. */ ! LambdaForm endEdit() { assert(verifyFirstChange()); // Assuming names have been changed pairwise from originalNames[i] to names[i], // update arguments to ensure referential integrity. for (int i = Math.max(firstChange, arity); i < length; i++) { Name name = names[i];
*** 314,323 **** --- 314,324 ---- System.arraycopy(exprs, 0, names, argp, exprp); // adjust arity arity -= exprp; } assert(verifyArity()); + return lambdaForm(); } private Name[] copyNamesInto(Name[] buffer) { System.arraycopy(names, 0, buffer, 0, length); Arrays.fill(buffer, length, buffer.length, null);
src/java.base/share/classes/java/lang/invoke/LambdaFormBuffer.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File