Summary

provide ##core#inline-routines for cheap SRFI-4 vector primitives

Metadata

Description

`XXXvector-length`, `XXXvector-ref` and `XXXvector-set!` would be much more efficient if routines callable via `##core#inline[[_allocate]|]` would be available for them (just as it currently is for, say, `vector-ref`). Since the structure-tag is not available in the C runtime, it has to be explicitly passed, e.g.

 C_word C_i_XXXvector_ref(C_word tag, C_word vec, C_word index);
 C_word C_i_XXXvector_set(C_word tag, C_word vec, C_word index, C_word x);
 C_word C_i_XXXvector_length(C_word tag, C_word vec);

(need allocating `..._ref` for f64/s32/u32 vector)

Note that the existing `C_a_i_f64/S32/u32vector_ref` are incorrectly named and should be `C_u_a_i_...` or something similar.

Changes and comments

[2011-12-17 17:49:49 UTC] felix changed description

[2011-12-20 07:27:28 UTC] felix wrote:

Note: renaming `C_a_i_XXXvector_ref` and friends will require updating the names in `unboxing.scm`.

[2016-02-20 13:07:02 UTC] sjamaan set milestone to 5.1

[2016-02-20 13:07:02 UTC] sjamaan wrote:

Putting it on the roadmap, tentatively for 5.1

[2016-08-20 13:55:35 UTC] sjamaan wrote:

We could also simply make the tags available in a global variable, like we do (or did) for the extended numeric types and the error-hook. This would be slightly more flexible, for example if we changed the representation to have a dedicated custom type.

[2016-08-20 13:55:35 UTC] sjamaan wrote:

1471694168184367

[2016-08-25 21:03:59 UTC] sjamaan set difficulty to medium

[2019-04-07 12:23:24 UTC] sjamaan wrote:

Getting ready for 5.1, moving tickets which won't make it in to 5.2.

[2019-04-07 12:23:24 UTC] sjamaan changed milestone from 5.1 to 5.2

[2019-04-11 13:52:48 UTC] sjamaan changed status from new to closed

[2019-04-11 13:52:48 UTC] sjamaan set resolution to fixed

[2019-04-11 13:52:48 UTC] sjamaan changed milestone from 5.2 to 5.1

[2019-04-11 13:52:48 UTC] sjamaan wrote:

Implemented with ea10de3