Changeset 15357


Ignore:
Timestamp:
07/30/20 14:09:10 (3 years ago)
Author:
Mark Evenson
Message:

Re-work strategy for CL:*FEATURES* for hosting JVM

Add a keyword denoting the Java platform to CL:*FEATURES* of the form
"JAVA-<n>" where "<n>" is an integer denoting the major version of the
platform according to JEP-223.

We deprecate depending on the presence of JAVA-1.6, JAVA-1.7, and
JAVA-1.8 in favor of JAVA-6, JAVA-7, and JAVA-8.

Add the contents of the "os.arch" property if not running under x86.

c.f. <https://openjdk.java.net/jeps/223>

TODO: describe the presence of of various CL:*FEATURES* in the Manual.

Location:
trunk/abcl/src/org/armedbear/lisp
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/abcl/src/org/armedbear/lisp/Keyword.java

    r15028 r15357  
    9494        IO                  = internKeyword("IO"),
    9595        J                   = internKeyword("J"),
     96    // BEGIN deprecated:  use "JAVA-<n>" instead
    9697        JAVA_1_4            = internKeyword("JAVA-1.4"),
    9798        JAVA_1_5            = internKeyword("JAVA-1.5"),
     
    100101        JAVA_1_8            = internKeyword("JAVA-1.8"),
    101102        JAVA_1_9            = internKeyword("JAVA-1.9"),
     103    // END deprecated
    102104        KEY                 = internKeyword("KEY"),
    103105        KEY_AND_VALUE       = internKeyword("KEY-AND-VALUE"),
  • trunk/abcl/src/org/armedbear/lisp/Lisp.java

    r15350 r15357  
    23672367    Symbol.READ_EVAL.initializeSpecial(T);
    23682368  }
    2369 
     2369 
     2370
     2371  //
    23702372  // ### *features*
     2373  //
    23712374  static
    23722375  {
     
    23742377    final String javaVersion = System.getProperty("java.version");
    23752378    final String osArch = System.getProperty("os.arch");
    2376 
     2379   
    23772380    // Common features
    23782381    LispObject featureList = list(Keyword.ARMEDBEAR, Keyword.ABCL,
    23792382                                  Keyword.COMMON_LISP, Keyword.ANSI_CL,
    2380                                   Keyword.CDR6, Keyword.MOP,
     2383                                  Keyword.CDR6,
     2384                                  Keyword.MOP,
    23812385                                  internKeyword("PACKAGE-LOCAL-NICKNAMES"));
     2386   
     2387    // add the contents of version as a keyword symbol regardless of runtime value
     2388    featureList = featureList.push(internKeyword("JVM-" + javaVersion));
     2389    {
     2390      String platformVersion = null;
     2391      if (javaVersion.startsWith("1.")) {
     2392          // pre <https://openjdk.java.net/jeps/223>
     2393          int i = javaVersion.indexOf(".", 2);
     2394          platformVersion = javaVersion.substring(2, i);
     2395        } else {
     2396          int i = javaVersion.indexOf(".");
     2397          platformVersion = javaVersion.substring(0, i);
     2398      }
     2399      featureList = featureList.push(internKeyword("JAVA-" + platformVersion));
     2400    }
     2401
     2402    {       // Deprecated java version
     2403      if (javaVersion.startsWith("1.5")) {
     2404        featureList = new Cons(Keyword.JAVA_1_5, featureList);
     2405      } else if (javaVersion.startsWith("1.6")) {
     2406        featureList = new Cons(Keyword.JAVA_1_6, featureList);
     2407      } else if (javaVersion.startsWith("1.7")) {
     2408        featureList = new Cons(Keyword.JAVA_1_7, featureList);
     2409      } else if (javaVersion.startsWith("1.8")) {
     2410        featureList = new Cons(Keyword.JAVA_1_8, featureList);
     2411      }
     2412    }
     2413
     2414   
    23822415    // OS type
    23832416    if (osName.startsWith("Linux"))
    23842417      featureList = Primitives.APPEND.execute(list(Keyword.UNIX,
    23852418                                                  Keyword.LINUX),
    2386                                              featureList);
     2419                                              featureList);
    23872420    else if (osName.startsWith("SunOS"))
    23882421      featureList = Primitives.APPEND.execute(list(Keyword.UNIX,
     
    23902423                                                   Keyword.SOLARIS),
    23912424                                              featureList);
    2392     else if (osName.startsWith("Mac OS X") ||
    2393              osName.startsWith("Darwin"))
     2425    else if (osName.startsWith("Mac OS X")
     2426             || osName.startsWith("Darwin"))
    23942427      featureList = Primitives.APPEND.execute(list(Keyword.UNIX,
    23952428                                                   Keyword.DARWIN),
     
    24092442    else if (osName.startsWith("Windows"))
    24102443      featureList = new Cons(Keyword.WINDOWS, featureList);
    2411     // Java version
    2412     if (javaVersion.startsWith("1.5")) {
    2413         featureList = new Cons(Keyword.JAVA_1_5, featureList);
    2414     } else if (javaVersion.startsWith("1.6")) {
    2415         featureList = new Cons(Keyword.JAVA_1_6, featureList);
    2416     } else if (javaVersion.startsWith("1.7")) {
    2417         featureList = new Cons(Keyword.JAVA_1_7, featureList);
    2418     } else if (javaVersion.startsWith("1.8")) {
    2419         featureList = new Cons(Keyword.JAVA_1_8, featureList);
    2420     } else if (javaVersion.startsWith("1.9")) {
    2421         featureList = new Cons(Keyword.JAVA_1_9, featureList);
    2422     }
     2444
    24232445    // Processor architecture
    2424     if(osArch != null) {
    2425       if (osArch.equals("amd64") || osArch.equals("x86_64"))
    2426         featureList = new Cons(Keyword.X86_64, featureList);
    2427       else if (osArch.equals("x86") || osArch.equals("i386"))
    2428         featureList = new Cons(Keyword.X86, featureList);
     2446    if (osArch != null) {
     2447      if (osArch.equals("amd64") || osArch.equals("x86_64")) {
     2448        featureList = featureList.push(Keyword.X86_64);
     2449      } else if (osArch.equals("x86") || osArch.equals("i386")) {
     2450        featureList = featureList.push(Keyword.X86);
     2451      } else {
     2452        // just push the value of 'os.arch' as a keyword
     2453        featureList = featureList.push(internKeyword(osArch));
     2454      }
    24292455    }
    24302456    Symbol.FEATURES.initializeSpecial(featureList);
Note: See TracChangeset for help on using the changeset viewer.