[parrot/parrot] da6c0b: [GH# 828] Avoid passsing non-double through va_lis...

GitHub noreply at github.com
Fri Nov 21 15:39:46 UTC 2014


  Branch: refs/heads/rurban/va_arg_print_n
  Home:   https://github.com/parrot/parrot
  Commit: da6c0b43a467e5db862f1274dbb54c7d9e9302d3
      https://github.com/parrot/parrot/commit/da6c0b43a467e5db862f1274dbb54c7d9e9302d3
  Author: Reini Urban <rurban at cpanel.net>
  Date:   2014-11-21 (Fri, 21 Nov 2014)

  Changed paths:
    M src/pmc/float.pmc
    M t/src/embed/pmc.t
    M t/src/extend_vtable.t

  Log Message:
  -----------
  [GH# 828] Avoid passsing non-double through va_list

va_list does not support float, long double nor __float128 on most systems.
Promote FLOATVAL to double to avoid that.


  Commit: afaf0c4330c110773421975f28ea4fb3645c6d0f
      https://github.com/parrot/parrot/commit/afaf0c4330c110773421975f28ea4fb3645c6d0f
  Author: Reini Urban <rurban at cpanel.net>
  Date:   2014-11-21 (Fri, 21 Nov 2014)

  Changed paths:
    M runtime/parrot/library/Test/More.pir
    M src/dynoplibs/sys.ops
    M t/dynoplibs/sysinfo.t
    M t/dynpmc/rational.t
    M t/library/test_more.t
    M t/pmc/integer.t
    M t/pmc/testlib/packfile_common.pir

  Log Message:
  -----------
  [GH #828] Fix most tests for non-double floatval

Add more needed precisions to numeric tests, tested with intel long double.

Change a magic number in t/library/test_more.t 888.81<=>888.82 1e-2
  was not stable enough for intel long double

Use t/pmc/testlib/annotations.pbc for binary comparisons of packfiles since
  stringifying non-double numbers is not stable enough.

Fix src/dynoplibs/sys.ops doublesize to numvalsize. This only works for double.


  Commit: a993b2eb8bda2a9d51574246ea25dcae9214aa1b
      https://github.com/parrot/parrot/commit/a993b2eb8bda2a9d51574246ea25dcae9214aa1b
  Author: Reini Urban <rurban at cpanel.net>
  Date:   2014-11-21 (Fri, 21 Nov 2014)

  Changed paths:
    M src/ops/core_ops.c
    M src/ops/io.ops

  Log Message:
  -----------
  [GH #828] Optimize print_n/i and say_n/i

print_n/nc/i/ic and the say variants go through a full Parrot_io_printf with
3 va_start/va_end scenarios and a custom format string parser,
and through char* -> STRING->char* conversion until the fixed
FLOATVAL_FMT or INTVAL_FMT printf is done.
Just to print a single int or number.

This also lost precision for non-double floatval's - if cast to (double).
Now avoided.


  Commit: 1ef872887bd88d24962c6a99bc7eb11858671569
      https://github.com/parrot/parrot/commit/1ef872887bd88d24962c6a99bc7eb11858671569
  Author: Reini Urban <rurban at cpanel.net>
  Date:   2014-11-21 (Fri, 21 Nov 2014)

  Changed paths:
    M config/auto/va_ptr.pm
    M config/auto/va_ptr/test_c.in
    M config/gen/config_h/feature_h.in
    M src/call/args.c

  Log Message:
  -----------
  [GH #828] Probe if double is needed for va_arg or if native floatval does fine

Set new feature.h PARROT_VA_PTR_FLOATVAL to double or the given floatval,
and use it in src/call/args.c

Print "stack|register (double)" in Configure va_arg result if a cast is
required and precision is lost.

Still some va_arg casts missing, multidispatch.t and nci.t fail.


  Commit: 1deee7f9f6c2169ee1423cd0da0e7648267e3b54
      https://github.com/parrot/parrot/commit/1deee7f9f6c2169ee1423cd0da0e7648267e3b54
  Author: Reini Urban <rurban at cpanel.net>
  Date:   2014-11-21 (Fri, 21 Nov 2014)

  Changed paths:
    M src/call/args.c
    M src/string/spf_vtable.c

  Log Message:
  -----------
  [GH #828] Use more va_arg PARROT_VA_PTR_FLOATVAL


  Commit: cb356839ba58ddc2cd3e5d5bfdd9fe2662739cc8
      https://github.com/parrot/parrot/commit/cb356839ba58ddc2cd3e5d5bfdd9fe2662739cc8
  Author: Reini Urban <rurban at cpanel.net>
  Date:   2014-11-21 (Fri, 21 Nov 2014)

  Changed paths:
    M config/gen/config_h/feature_h.in

  Log Message:
  -----------
  [cage] ident #define properly


  Commit: b941590b33210b8f7f612d227c6b241523d7be15
      https://github.com/parrot/parrot/commit/b941590b33210b8f7f612d227c6b241523d7be15
  Author: Reini Urban <rurban at cpanel.net>
  Date:   2014-11-21 (Fri, 21 Nov 2014)

  Changed paths:
    M src/pmc/float.pmc

  Log Message:
  -----------
  use PARROT_VA_PTR_FLOATVAL in float.pmc


Compare: https://github.com/parrot/parrot/compare/4902b3aa72f2...b941590b3321


More information about the parrot-commits mailing list