# See the License for the specific language governing permissions and
# limitations under the License.
-# FFI support for the compilers
+# Full FFI support for the compiler
module compiler_ffi
intrude import light
if mproperty.is_init then
var recv_mtype = recv_mtype
recv_var = nitni_visitor.init_instance_or_extern(recv_mtype)
- nitni_visitor.add("{mtype.ctype} recv /* var self: {mtype} */;")
- nitni_visitor.add("recv = {recv_var};")
+ nitni_visitor.add("{mtype.ctype} self /* var self: {mtype} */;")
+ nitni_visitor.add("self = {recv_var};")
else
mtype = mtype.anchor_to(v.compiler.mainmodule, recv_mtype)
- recv_var = nitni_visitor.var_from_c("recv", mtype)
+ recv_var = nitni_visitor.var_from_c("self", mtype)
recv_var = nitni_visitor.box_extern(recv_var, mtype)
end
var vars = new Array[RuntimeVariable]
- var recv_var = nitni_visitor.var_from_c("recv", mclass_type)
+ var recv_var = nitni_visitor.var_from_c("self", mclass_type)
recv_var = nitni_visitor.box_extern(recv_var, mclass_type)
vars.add(recv_var)
var from_var = nitni_visitor.var_from_c("from", from)
from_var = nitni_visitor.box_extern(from_var, from)
- var recv_var = nitni_visitor.type_test(from_var, to, "FFI isa")
+ var recv_var = nitni_visitor.type_test(from_var, to, "isa")
nitni_visitor.add("return {recv_var};")
nitni_visitor.add("\}")
from_var = nitni_visitor.box_extern(from_var, from)
## test type
- var check = nitni_visitor.type_test(from_var, to, "FFI cast")
+ var check = nitni_visitor.type_test(from_var, to, "as")
nitni_visitor.add("if (!{check}) \{")
nitni_visitor.add_abort("FFI cast failed")
nitni_visitor.add("\}")