8064707: Remove NativeArray link logic fields

Wed, 12 Nov 2014 15:13:08 +0100

author
attila
date
Wed, 12 Nov 2014 15:13:08 +0100
changeset 1098
21bb83c7d790
parent 1097
7311b78f9356
child 1099
fc37699ddc0e

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

mercurial