-
-
Notifications
You must be signed in to change notification settings - Fork 5.6k
jlcall generated for function with only jl_value_t*
arguments
#11304
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
::ANY
argumentjl_value_t*
argument
It seems that this is not only limited to |
@vtjnash exactly (you beat me by the time I went to get some water.....) .... |
yes, i happened to know the location and behavior of the bit of code responsible for the specsig decision: Lines 3880 to 3894 in 1b2f4fa
|
jl_value_t*
argumentjl_value_t*
argument
jl_value_t*
argumentjl_value_t*
arguments
@vtjnash is there any reason to only specialize the signature in these conditions? Is there trade off with specializing the signatures? IIRC, there's a limitation on the number of arguments (coming from llvm?) but this is not testing that either... |
Remove those checks and it seems to work well locally. |
unintentionally fixed by jb/functions |
Well, we still have:
|
... so it was "fixed" because there's an implicit singleton argument for normal functions now?.... |
See below. Somehow if the signature of a function is
(::ANY)
and if the return type isjl_value_t*
, a jlcall is generated even though a c call is generated both when the return type is different and when there's additional parameters to be specialized on.I don't really know how it is decided whether a jl signature or a c signature will be generated but it seems that this is the wrong decision in this case.
This issue affect #11284. Although I guess I can let the helper function specialize on the first argument to work around this without causing more code to be generated (since the first argument should always be a
DataType
anyway....)Test code
Output
The text was updated successfully, but these errors were encountered: