def set_instance_fields(self, value): assert isinstance(value, Array) self._instance_fields = value if (self._layout_for_instances is None or value.get_number_of_indexable_fields() != self._layout_for_instances.get_number_of_fields()): self._layout_for_instances = ObjectLayout( value.get_number_of_indexable_fields(), self)
def __init__(self, universe, number_of_fields=Object.NUMBER_OF_OBJECT_FIELDS, obj_class=None): _Class.__init__(self, universe, number_of_fields, obj_class) if number_of_fields >= 0: self._layout_for_instances = ObjectLayout(number_of_fields, self) else: self._layout_for_instances = None
def __init__(self, universe, number_of_fields=-1, obj_class=None): Object.__init__(self, obj_class, number_of_fields) self._super_class = nilObject self._name = None self._instance_fields = None self._instance_invokables = None self._invokables_table = {} self._universe = universe if number_of_fields >= 0: self._layout_for_instances = ObjectLayout(number_of_fields, self) else: self._layout_for_instances = None
def __init__(self, obj_class, number_of_fields=NUMBER_OF_OBJECT_FIELDS): cls = obj_class if obj_class is not None else nilObject ObjectWithoutFields.__init__(self, cls) if obj_class is not None: self._object_layout = obj_class.get_layout_for_instances() else: self._object_layout = ObjectLayout(number_of_fields) # IMPORTANT: when changing the number of preallocated fields, # you'll also need to update storage_location.py's constants: # NUMBER_OF_PRIMITIVE_FIELDS and NUMBER_OF_POINTER_FIELDS self._field1 = nilObject self._field2 = nilObject self._field3 = nilObject self._field4 = nilObject self._field5 = nilObject self._primField1 = 0 self._primField2 = 0 self._primField3 = 0 self._primField4 = 0 self._primField5 = 0 assert (self._object_layout.get_number_of_fields() == number_of_fields) # TODO: # or obj_class is None # or not obj_class._universe.is_object_system_initialized()) n = self._object_layout.get_number_of_used_extended_prim_locations() if n > 0: self._primFields = [0] * n else: self._primFields = _EMPTY_LIST self._primitive_used_map = 0 n = self._object_layout.get_number_of_used_extended_ptr_locations() if n > 0: self._fields = [nilObject] * n else: self._fields = None ## for some reason _EMPTY_LIST doesn't typecheck here