Stack allocation when passing large isbits objects


When passing around a large isbits object without modification, does Julia push a copy onto the stack each time it’s passed as an argument? Eg. in this code

using StaticArrays

@noinline f(x) = g(x)
@noinline g(x) = h(x)
@noinline h(x) = sum(x)


Does the stack grow by 4 * sizeof(SVector(1:20...))? Is there an upper-bound beyond which Julia just heap-allocates the object?