Skip to content
Snippets Groups Projects
  1. Dec 18, 1997
  2. Dec 17, 1997
  3. Dec 16, 1997
  4. Dec 15, 1997
  5. Dec 14, 1997
    • pw's avatar
      This set of changes enables the use of forward referenced classes in PCL. · 1af400f8
      pw authored
      The problem was(is) that the wrapper object needed to connect the Lisp
      type system to PCL classes doesn't exist until the forward-referenced-class
      is defined. At that time all the subclasses of it are initialized and
      wrappers attached. In the meantime, the actual forward referenced class is
      an instance of pcl::forward-referenced-class and any subclasses are
      pcl class instances with most slots nil.
      
      The fix herein arranges for UPDATE-LISP-CLASS-LAYOUT to also set
      the lisp:class-name and use (setf lisp:find-class) to connect the
      new layout to the Lisp class system.
      
      An undesired consequence of this is that DEFCLASS can't return a valid
      class object unless all superclasses are defined. This shouldn't be a
      real problem as the classes can't be used in the intermediate state,
      but the HyperSpec says DEFCLASS returns a class object. We return
      a valid class object or NIL.
      1af400f8
    • dtc's avatar
      e3f44e41
    • dtc's avatar
      Fix the log and sqrt derive type optimizers which I broken in the · a4cd0145
      dtc authored
      prior commit, also make them a little smart about the handling of a
      lower limit of 0 as only a float could be -0.0.
      a4cd0145
    • dtc's avatar
      Merge in the revised derive-type optimisers from Raymond Toy: · 1a0a7672
      dtc authored
      compiler/srctran.lisp
      
      o  Replaced all of the old optimizer routines with new ones that should
      work much better.  Optimizers should now handle all union types and most
      member types.  NOTE:  for some reason a member type with both numbers
      and non-numbers isn't quite handled correctly.  The optimizer is only
      passed the elements of the member type that are numbers; it never sees
      the non-number elements of the member type.
      
      o  Fixed a bug in bound-func.  Since all of the FP traps are turned off,
      we now need to check in case the function returns things like infinity
      and convert them to nil.
      
      o  Fixed a bug in the computation of bounds for rem.  Invalid intervals
      were sometimes returned.
      
      compiler/float-tran.lisp
      
      o  Mods to handle the changes in srctran.lisp.
      
      o  All of the optimizers (from propagate-float and propagate-fun) should
      now handle union types and member types.
      
      o  Fixed a bug in the atan optimizer for two args with at least one of
      them not being a real.
      
      o  For functions that return (or float (complex float)), we try to be
      more careful and compute the bounds for the float part, since we usually
      have them.  Not sure what we gain, though.
      
      -=-=-=-
      
      Plus some further cleanups and fixes by Douglas Crosher:
      
      o Merge with the latest verion of float-trans: CIS transform; no
      result types on complex function transforms.
      
      o Can use a common scale-float-derive-type-aux function.
      
      o complex-derive-type-aux-2 was broken, needed updating to handle
      changes.
      
      o For sqrt and log return an (or float complex) type if the argument
      type includes 0.0 in its range as 0.0 = -0.0 so the argument may also
      be -0.0.
      
      o A number of the optimizers returned a complex float with invalid
      intervals just copied from the argument - strip the intervals from the
      returned type in these cases.
      
      o Note no expt optimiser.
      1a0a7672
    • dtc's avatar
      Compiling the initialisation function for the · 55160a83
      dtc authored
      checking-or-caching-function-list in dlisp2.lisp depends on macros in
      boot.lisp and braid.lisp which are not loaded until later. So move
      this code from dlisp2.lisp to a new file dlisp3.lisp so this can be
      compiled later. Leave this init. disabled, although some performance
      improvements have been seen by enabling it.
      55160a83
    • dtc's avatar
      Add declarations to the timing functions to reduce their overhead and · f819122e
      dtc authored
      reduce compiler efficiency notes.
      
      Fix for the operations-per-second macro.
      
      Fix a few package problems; call to find-class needed to use
      pcl:find-class.
      f819122e
  6. Dec 13, 1997
  7. Dec 12, 1997
    • dtc's avatar
      Support for rand-mt19937. · 69755f55
      dtc authored
      69755f55
    • dtc's avatar
      Special random transform for use with random-mt19937: · d947becd
      dtc authored
      - For constant arguments, check the actual error after taking the
      value MOD the limit so that a wider range are acceptable. E.g. Can now
      inline (random (expt 2 32)) for which there is no error.
      - On the x86 port use the faster multiplication rather than division
      for the MOD calculation.
      d947becd
    • dtc's avatar
      Fix a type declaration typo. · a70b7bb4
      dtc authored
      Slightly faster version of %random-double-float for the x86 port.
      Don't push :random-mt19937 onto *features* here.
      a70b7bb4
  8. Dec 11, 1997
  9. Dec 07, 1997
  10. Dec 06, 1997
  11. Dec 05, 1997
  12. Dec 04, 1997
    • dtc's avatar
      Update from Raymond Toy: · 671cd019
      dtc authored
      With the :propagate-fun-type feature, modify defknowns for exp, sin,
      cos, atan, tan, sinh, cosh, asinh not to call
      result-type-float-contagion because each has its own optimizer now.
      671cd019
    • dtc's avatar
      Update from Raymond Toy: · e22d22a8
      dtc authored
      Fixed small bug in elfun-derive-type-1: When a complex number is
      passed in, we don't want to just copy that as the result.  We want the
      same type of complex number but with no bounds included.
      
      New function float-or-complex-type to compute the union type (or float
      (complex float)) with the appropriate type of float and bounds, if
      needed.
      
      At the end compiler/float-tran.lisp, the derive-type optimizers for
      sin, cos, and tan, are never enabled, because of a misspelling of
      propagate-fun-type (was progagate-fun-type). Plus a few fixes for
      these.
      
      Added expt derive-type optimizer, should handle all cases.
      
      Added derive-type optimizers for conjugate and cis.
      e22d22a8
Loading