frankyin-factual commented on pull request #29069:
URL: https://github.com/apache/spark/pull/29069#issuecomment-656954852


   that's the code for `StdInstantiatorStrategy`:
   ```
   public <T> ObjectInstantiator<T> newInstantiatorOf(Class<T> type) {
   
         if(PlatformDescription.isThisJVM(HOTSPOT) || 
PlatformDescription.isThisJVM(OPENJDK)) {
            // Java 7 GAE was under a security manager so we use a degraded 
system
            if(PlatformDescription.isGoogleAppEngine() && 
PlatformDescription.SPECIFICATION_VERSION.equals("1.7")) {
               if(Serializable.class.isAssignableFrom(type)) {
                  return new ObjectInputStreamInstantiator<T>(type);
               }
               return new AccessibleInstantiator<T>(type);
            }
            // The UnsafeFactoryInstantiator would also work. But according to 
benchmarks, it is 2.5
            // times slower. So I prefer to use this one
            return new SunReflectionFactoryInstantiator<T>(type);
         }
         else if(PlatformDescription.isThisJVM(DALVIK)) {
            if(PlatformDescription.isAndroidOpenJDK()) {
               // Starting at Android N which is based on OpenJDK
               return new UnsafeFactoryInstantiator<T>(type);
            }
            if(ANDROID_VERSION <= 10) {
               // Android 2.3 Gingerbread and lower
               return new Android10Instantiator<T>(type);
            }
            if(ANDROID_VERSION <= 17) {
               // Android 3.0 Honeycomb to 4.2 Jelly Bean
               return new Android17Instantiator<T>(type);
            }
            // Android 4.3 until Android N
            return new Android18Instantiator<T>(type);
         }
         else if(PlatformDescription.isThisJVM(JROCKIT)) {
            // JRockit is compliant with HotSpot
            return new SunReflectionFactoryInstantiator<T>(type);
         }
         else if(PlatformDescription.isThisJVM(GNU)) {
            return new GCJInstantiator<T>(type);
         }
         else if(PlatformDescription.isThisJVM(PERC)) {
            return new PercInstantiator<T>(type);
         }
   
         // Fallback instantiator, should work with most modern JVM
         return new UnsafeFactoryInstantiator<T>(type);
   
      }
   ```


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org
For additional commands, e-mail: reviews-h...@spark.apache.org

Reply via email to