Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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
Ejemplo n.º 3
0
 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
Ejemplo n.º 4
0
    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