def compile(self, context): block = ObjectRepresentation() block.meta_set_ast(self) block.meta_set_parameters(self.params) # push current scope context.add_bytecode(BYTECODE_PUSH_SELF) index = context.add_literal_obj(block) context.add_bytecode(BYTECODE_PUSH_LITERAL) context.add_bytecode(LITERAL_TYPE_BLOCK) context.add_bytecode(index) for name, value in self.slots.iteritems(): self._add_slot_to_bytecode(context, name, value) context.add_bytecode(SLOT_NORMAL) for name, value in self.parents.iteritems(): self._add_slot_to_bytecode(context, name, value) context.add_bytecode(SLOT_PARENT) new_context = CodeContext() block.meta_set_code_context(new_context) for item in self.code: item.compile(new_context) block.map.code_context = new_context return context
def compile(self, context): obj = ObjectRepresentation() obj.meta_set_ast(self) obj.meta_set_parameters(self.params) index = context.add_literal_obj(obj) context.add_bytecode(BYTECODE_PUSH_LITERAL) context.add_bytecode(LITERAL_TYPE_OBJ) context.add_bytecode(index) for name, value in self.slots.iteritems(): self._add_slot_to_bytecode(context, name, value) context.add_bytecode(SLOT_NORMAL) for name, value in self.parents.iteritems(): self._add_slot_to_bytecode(context, name, value) context.add_bytecode(SLOT_PARENT) if self.code: new_context = CodeContext() obj.meta_set_code_context(new_context) for item in self.code: item.compile(new_context) obj.map.code_context = new_context return context