Beispiel #1
0
def test_get_segment_used_size():
    memory = MemoryDict({
        RelocatableValue(0, 0): 0,
        RelocatableValue(0, 2): 0,
        RelocatableValue(1, 5): 0,
        RelocatableValue(1, 7): 0,
        RelocatableValue(3, 0): 0,
        RelocatableValue(4, 1): 0,
    })
    assert [get_segment_used_size(i, memory) for i in range(5)] == [3, 8, 0, 1, 2]
Beispiel #2
0
 def final_stack(self, runner, pointer):
     if self.included:
         self.stop_ptr = runner.vm_memory[pointer - 1]
         used = get_segment_used_size(self.base.segment_index,
                                      runner.vm_memory)
         assert self.stop_ptr == self.base + used, \
             f'Invalid stop pointer for {self.name}. ' + \
             f'Expected: {self.base + used}, found: {self.stop_ptr}'
         return pointer - 1
     else:
         self.stop_ptr = self.base
         return pointer
Beispiel #3
0
    def finalize_segments(self):
        self.segments.finalize(self.program_base.segment_index,
                               size=len(self.program.data),
                               public_memory=[
                                   (i, 0)
                                   for i in range(len(self.program.data))
                               ])
        self.segments.finalize(self.execution_base.segment_index,
                               size=get_segment_used_size(
                                   self.execution_base.segment_index,
                                   self.vm_memory),
                               public_memory=self.execution_public_memory)

        for builtin_runner in self.builtin_runners.values():
            builtin_runner.finalize_segments(self)
Beispiel #4
0
 def get_used_cells(self, runner):
     used = get_segment_used_size(self.base.segment_index, runner.vm_memory)
     return used