private boolean isLocalValueType(JSType typei, AbstractCompiler compiler) {
      checkNotNull(typei);
      JSType nativeObj = compiler.getTypeRegistry().getNativeType(JSTypeNative.OBJECT_TYPE);
      JSType subtype = typei.meetWith(nativeObj);
      // If the type includes anything related to a object type, don't assume
      // anything about the locality of the value.
      return subtype.isEmptyType();
    }
private boolean isLocalValueType ( JSType typei , AbstractCompiler compiler ) { checkNotNull ( typei ) ; JSType nativeObj = compiler . getTypeRegistry ( ) . getNativeType ( JSTypeNative . OBJECT_TYPE ) ; JSType subtype = typei . meetWith ( nativeObj ) ; return subtype . isEmptyType ( ) ; }
Return whether {@code type} is guaranteed to be a that of a "local value".

<p>For the purposes of purity analysis we really only care whether a return value is
immutable and identity-less; such values can't contribute to side-effects. Therefore, this
method is implemented to check if {@code type} is that of a primitive, since primitives
exhibit both relevant behaviours.