Wed, 12 Nov 2014 15:13:08 +0100
8064707: Remove NativeArray link logic fields
Reviewed-by: hannesw, lagergren
src/jdk/nashorn/internal/objects/NativeArray.java | file | annotate | diff | comparison | revisions |
1.1 --- a/src/jdk/nashorn/internal/objects/NativeArray.java Thu Nov 13 16:59:03 2014 +0100 1.2 +++ b/src/jdk/nashorn/internal/objects/NativeArray.java Wed Nov 12 15:13:08 2014 +0100 1.3 @@ -33,6 +33,7 @@ 1.4 import static jdk.nashorn.internal.runtime.arrays.ArrayLikeIterator.arrayLikeIterator; 1.5 import static jdk.nashorn.internal.runtime.arrays.ArrayLikeIterator.reverseArrayLikeIterator; 1.6 import static jdk.nashorn.internal.runtime.linker.NashornCallSiteDescriptor.CALLSITE_STRICT; 1.7 + 1.8 import java.lang.invoke.MethodHandle; 1.9 import java.util.ArrayList; 1.10 import java.util.Arrays; 1.11 @@ -91,10 +92,6 @@ 1.12 private static final Object CALL_CMP = new Object(); 1.13 private static final Object TO_LOCALE_STRING = new Object(); 1.14 1.15 - private PushLinkLogic pushLinkLogic; 1.16 - private PopLinkLogic popLinkLogic; 1.17 - private ConcatLinkLogic concatLinkLogic; 1.18 - 1.19 /* 1.20 * Constructors. 1.21 */ 1.22 @@ -1750,11 +1747,11 @@ 1.23 @Override 1.24 public SpecializedFunction.LinkLogic getLinkLogic(final Class<? extends LinkLogic> clazz) { 1.25 if (clazz == PushLinkLogic.class) { 1.26 - return pushLinkLogic == null ? new PushLinkLogic() : pushLinkLogic; 1.27 + return PushLinkLogic.INSTANCE; 1.28 } else if (clazz == PopLinkLogic.class) { 1.29 - return popLinkLogic == null ? new PopLinkLogic() : pushLinkLogic; 1.30 + return PopLinkLogic.INSTANCE; 1.31 } else if (clazz == ConcatLinkLogic.class) { 1.32 - return concatLinkLogic == null ? new ConcatLinkLogic() : concatLinkLogic; 1.33 + return ConcatLinkLogic.INSTANCE; 1.34 } 1.35 return null; 1.36 } 1.37 @@ -1797,6 +1794,8 @@ 1.38 * This is linker logic for optimistic concatenations 1.39 */ 1.40 private static final class ConcatLinkLogic extends ArrayLinkLogic { 1.41 + private static final LinkLogic INSTANCE = new ConcatLinkLogic(); 1.42 + 1.43 @Override 1.44 public boolean canLink(final Object self, final CallSiteDescriptor desc, final LinkRequest request) { 1.45 final Object[] args = request.getArguments(); 1.46 @@ -1827,6 +1826,8 @@ 1.47 * This is linker logic for optimistic pushes 1.48 */ 1.49 private static final class PushLinkLogic extends ArrayLinkLogic { 1.50 + private static final LinkLogic INSTANCE = new PushLinkLogic(); 1.51 + 1.52 @Override 1.53 public boolean canLink(final Object self, final CallSiteDescriptor desc, final LinkRequest request) { 1.54 return getContinuousArrayData(self) != null; 1.55 @@ -1837,6 +1838,8 @@ 1.56 * This is linker logic for optimistic pops 1.57 */ 1.58 private static final class PopLinkLogic extends ArrayLinkLogic { 1.59 + private static final LinkLogic INSTANCE = new PopLinkLogic(); 1.60 + 1.61 /** 1.62 * We need to check if we are dealing with a continuous non empty array data here, 1.63 * as pop with a primitive return value returns undefined for arrays with length 0