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
示例#4
0
 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))