You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Thank you for the report.
It is indeed likely related to that commit or at least to the Fixnum limit.
I have also reviewed all other similar cases and fixed them.
BTW here is some context: it used to be that TruffleRuby declared Fixnum to be the entire signed 64-bit long range ([-2**63,2**63[) since Java long is used internally, but that doesn't really work in the C API because there is some expectation that all fixnums can be represented as tagged pointers and so have 1 less bit.
So then in the C API there are 3 cases, fit in Fixnum ([-2**62,2**62]), real Bignum (|x|>2**63) and "in-between" which is what we hit here, which is represented as a long in Java but is not a Fixnum from the C API POV.
So the fix changes how to call a method on such a long, which is not a Ruby object from the interop POV but an interop primitive (which has no language).
Tests pass with truffleruby-23.1.1, but error on truffleruby-dev (v24.0.0-dev-070598d4).
See https://github.com/sparklemotion/sqlite3-ruby/actions/runs/7111938537/job/19478241596#step:7:47
Test in question is:
(the exception is thrown from the
INSERT
statement)I haven't bisected, but looking at the git log, 8404d4f jumps out to me as a possible commit for introducing this behavior change.
The text was updated successfully, but these errors were encountered: