def assign_pointer_to_sender(self, ptr): assert isinstance(ptr, EntityPointer) if self._get_or_create is None: self._get_or_create = self.compiler.extern_function( '_internal/entity_ptr', None, (i.VarType.i32, )) self.uid_obj = self.compiler.global_def('__uid', self.objective()) retvars = (ptr._var, ) self.compiler.add_insn(i.Invoke(self._get_or_create, None, retvars))
def get(self, array, index): self.lazy_load_get() args = (array, index) # TODO type val = self.compiler.create_var('arrval', i.VarType.i32) ret_args = (val, ) self.compiler.add_insn(i.Invoke(self.getter, args, ret_args)) return val
def invoke(self, args, ret_args): callback = None if self.fn_type.is_async: callback = self.compiler.create_block('async_cb') insn = i.DeferredInvoke(self.ir_func, callback, args, ret_args) else: insn = i.Invoke(self.ir_func, args, ret_args) self.compiler.add_insn(insn) return callback
def assign_pointer_to_sender(self, ptr): assert isinstance(ptr, EntityPointer) if self._get_or_create is None: self._get_or_create = self._create_func() retvars = (ptr._var, ) self.compiler.add_insn(i.Invoke(self._get_or_create, None, retvars))
def set(self, array, index, value): self.lazy_load_set() args = (array, index, value) self.compiler.add_insn(i.Invoke(self.setter, args, None))