Skip to content
Snippets Groups Projects
  1. Feb 19, 2018
    • Raymond Toy's avatar
      Complex array accessors are not foldable · e9a598e5
      Raymond Toy authored
      Fixes #61 and #62.
      
      The `ARRAY-HAS-FILL-POINTER-P` and `ARRAY-DISPLACEMENT` functions are
      declared inline and the compiler tries to constant-fold these inlined
      functions operating on simple arrays.
      
      Thus don't allow the compiler to constant-fold calls to
      `%ARRAY-FILL-POINTER-P`.  This is normally protected by a call to
      `ARRAY-HEADER-P`, but when it's inlined, the compiler tries to
      constant-fold `%ARRAY-FILL-POINTER-P` on an array without such a slot.
      
      Likewise `ARRAY-DISPLACEMENT` calls `%ARRAY-DISPLACED-P`,
      `%ARRAY-DATA-VECTOR`, and `%ARRAY-DISPLACEMENT`, and the calls are
      protected by `ARRAY-HEADER-P`. So don't constant-fold these either.
      
      Maybe we could also make CONSTANT-FOLD-CALL be smarter about this?
      
      * src/compiler/generic/objdef.lisp
        * Remove flushable from these ref-trans methods.
      * src/general-info/release-21d.md
        * Update
      * tests/issues.lisp
        * Add tests from the bug reports.
      e9a598e5
  2. Feb 18, 2018
    • Raymond Toy's avatar
      Fix #58: Bogus type error in comparison of complex number with `THE` form · bccd6a98
      Raymond Toy authored
      The deftransforms `upgraded-complex-real-contagion-arg1` and
      `upgraded-complex-real-contagion-arg2` were coercing the complex
      number to the exact type of the float number.  Because of the `THE`
      form, the type of the float was `(member 1d0)`, so the compiler was
      coercing `#c(1/2 1/2)` to `(complex (double-float 1d0))`, which is
      wrong.
      
      Therefore, coerce the complex to just the type format of the real
      part, ignoring any bounds.
      
      * src/compiler/float-tran.lisp
        * Coerce to format type, discarding any bounds
      * src/general-info/release-21d.md
        * Update notes
      * tests/issues.lisp
        * Added test for this
      bccd6a98
    • Raymond Toy's avatar
      Fix #60: `C::%UNARY-FROUND` is undefined · 26e3ad82
      Raymond Toy authored
      Remove the symbol `C::%UNARY-FROUND` and just let the compiler package
      inherit it from the kernel package.
      
      * src/bootfiles/21c/boot-2018-02-1.lisp
          * Use this to bootstrap the change (by uninterning the symbol)
      * src/code/float.lisp
          * Just export %unary-fround
      * src/general-info/release-21d.md
          * Update
      * tests/issues.lisp
          * Add test for this issue
      26e3ad82
  3. Feb 04, 2018
  4. Feb 03, 2018
  5. Jan 29, 2018
  6. Jan 28, 2018
    • Raymond Toy's avatar
      Restore ability to compile in mt19937 rng. · 380759e3
      Raymond Toy authored
      - src/tools/worldbuild.lisp
          - only compile rand-xoroshiro if :random-xoroshiro is a feature
      - src/tools/worldload.lisp
          - only load rand-xoroshiro if :random-xoroshiro is a feature
      - tests/rng.lisp
          - Add a quick test that the state vector of the *random-state* has
            the correct type.
      380759e3
  7. Dec 21, 2017
  8. Dec 20, 2017
  9. Dec 16, 2017
  10. Oct 08, 2017
  11. Sep 30, 2017
  12. Sep 09, 2017
    • Raymond Toy's avatar
      Fix #41: Report proper process status · f05cb10a
      Raymond Toy authored
      The main problem is that we weren't calling wait3 with WCONTINUED so
      that we would be signaled when the process continues.  And we also
      need to check that result of wait call was WCONTINUED>
      
      Replace the wait3 routine with a C routine (prog_status) so we don't
      have to deal with the OS-specific flags.  This function basically
      returns what the lisp function wait3 did.
      
      Use this function in GET-PROCESSES-STATUS-CHANGES.
      
       - runprog.c:
         - Add prog_status
       - run-program.lisp:
         - Use prog_status instead of wait3
       - issues.lisp:
         - Add basic test
      f05cb10a
  13. Sep 06, 2017
  14. Dec 02, 2016
  15. Nov 30, 2016
  16. Nov 29, 2016
  17. Nov 11, 2016
  18. Oct 04, 2016
  19. Oct 03, 2016
  20. Sep 26, 2016
  21. Sep 10, 2016
  22. Sep 08, 2016
  23. Sep 04, 2016
    • Raymond Toy's avatar
      Fix #27: PATHNAME-MATCH-P loops for logical pathnames · c07cad4b
      Raymond Toy authored
      When support for search-lists was added to PATHNAME-MATCH-P, support
      for logical pathnames was broken because PATHNAME-MATCH-P eventually
      calls TRANSLATE-LOGICAL-PATHNAME which calls PATHNAME-MATCH-P with
      logical pathnames.  This caused infinite recursion.
      
      So add back the original PATHNAME-MATCH-P, but rename to
      %PATHNAME-MATCH-P and use that in TRANSLATE-LOGICAL-PATHNAME and
      friends.
      
      Add test for this case too.
      c07cad4b
  24. Aug 21, 2016
    • Raymond Toy's avatar
      Fix #25: Handle unicode strings more consistently. · a8c27cfa
      Raymond Toy authored
      When writing a string to the program too few octets were written
      because strings are now 16-bits wide.  To fix this, only write the low
      8-bits of each character.  This matches what reading does.
      
      This pretty much implies that the caller should use
      STREAM:STRING-ENCODE and STREAM::STRING-DECODE on the strings.
      
      Add several tests to verify the expected results.
      a8c27cfa
  25. May 14, 2016
    • Raymond Toy's avatar
      Fix #22 where coerce was returning the wrong type of float. · bb4afde9
      Raymond Toy authored
      src/compiler/float.lisp:
      o The deftransform coerce was checking for a type of 'float and using
        %single-float to do the conversion.  This is incorrect; it should
        only apply if the type is 'single-float.
      
      tests/issues.lisp
      o Add test for this.
      
      Verified that the test fails on the current snapshot and ix fixed by
      this change.
      bb4afde9
  26. Jan 01, 2016
    • Raymond Toy's avatar
      Add special case for (expt 0 power) · f3b73541
      Raymond Toy authored
      We know the result of (expt 0 power) so return it immediately without
      first checking if the power exceeds the limit.
      
      Also took the opportunity to add a better message to the
      intexp-limit-error condition to make it more explicit what is being
      computed and why it's failing.
      
      Tests added too.
      f3b73541
  27. Dec 31, 2015
    • Raymond Toy's avatar
      Handle search lists in pathname-match-p. · 521f8392
      Raymond Toy authored
      Allow search lists in pathname-match-p.  For each arg, we enumerate
      the possible values of the search list and try to find a match between
      the path and the wild path.  If there's a match, return true.
      
      Tests added for some cases of pathname-match-p with search lists.
      
      Fix issue #16.
      521f8392
  28. Dec 28, 2015
  29. Dec 25, 2015
  30. Dec 24, 2015
Loading