shithub: orca

Download patch

ref: 74c414bcf0a4f33140e7ac22fbc65c32222b3dbb
parent: 5eae81300b4e025bba2aa6185be9e5a6d67861d2
author: cancel <cancel@cancel.fm>
date: Wed Nov 28 06:26:00 EST 2018

Add glue for using bank in sim

--- a/bank.c
+++ b/bank.c
@@ -21,7 +21,7 @@
 void bank_deinit(Bank* bank) { free(bank->data); }
 
 void bank_enlarge_to(Bank* bank, Usz bytes) {
-  Usz new_cap = orca_round_up_power2(bytes);
+  Usz new_cap = bytes < 256 ? 256 : orca_round_up_power2(bytes);
   bank->data = realloc(bank->data, new_cap);
   bank->capacity = new_cap;
 }
--- a/bank.h
+++ b/bank.h
@@ -1,3 +1,4 @@
+#pragma once
 #include "base.h"
 
 typedef struct {
--- a/cli_main.c
+++ b/cli_main.c
@@ -1,3 +1,4 @@
+#include "bank.h"
 #include "base.h"
 #include "field.h"
 #include "mark.h"
@@ -97,10 +98,13 @@
   Markmap_reusable markmap_r;
   markmap_reusable_init(&markmap_r);
   markmap_reusable_ensure_size(&markmap_r, field.height, field.width);
+  Bank bank;
+  bank_init(&bank);
   for (int i = 0; i < ticks; ++i) {
-    orca_run(field.buffer, markmap_r.buffer, field.height, field.width);
+    orca_run(field.buffer, markmap_r.buffer, field.height, field.width, &bank);
   }
   markmap_reusable_deinit(&markmap_r);
+  bank_deinit(&bank);
   field_fput(&field, stdout);
   field_deinit(&field);
   return 0;
--- a/sim.c
+++ b/sim.c
@@ -368,7 +368,9 @@
     oper_phase1_##_oper_name(gbuf, mbuf, height, width, iy, ix, glyph_char);   \
     break;
 
-static void sim_phase_0(Gbuffer gbuf, Mbuffer mbuf, Usz height, Usz width) {
+static void sim_phase_0(Gbuffer gbuf, Mbuffer mbuf, Usz height, Usz width,
+                        Bank* bank) {
+  (void)bank;
   for (Usz iy = 0; iy < height; ++iy) {
     Glyph* glyph_row = gbuf + iy * width;
     for (Usz ix = 0; ix < width; ++ix) {
@@ -385,7 +387,9 @@
   }
 }
 
-static void sim_phase_1(Gbuffer gbuf, Mbuffer mbuf, Usz height, Usz width) {
+static void sim_phase_1(Gbuffer gbuf, Mbuffer mbuf, Usz height, Usz width,
+                        Bank* bank) {
+  (void)bank;
   for (Usz iy = 0; iy < height; ++iy) {
     Glyph* glyph_row = gbuf + iy * width;
     for (Usz ix = 0; ix < width; ++ix) {
@@ -403,8 +407,8 @@
   }
 }
 
-void orca_run(Gbuffer gbuf, Mbuffer mbuf, Usz height, Usz width) {
+void orca_run(Gbuffer gbuf, Mbuffer mbuf, Usz height, Usz width, Bank* bank) {
   mbuffer_clear(mbuf, height, width);
-  sim_phase_0(gbuf, mbuf, height, width);
-  sim_phase_1(gbuf, mbuf, height, width);
+  sim_phase_0(gbuf, mbuf, height, width, bank);
+  sim_phase_1(gbuf, mbuf, height, width, bank);
 }
--- a/sim.h
+++ b/sim.h
@@ -1,5 +1,6 @@
 #pragma once
+#include "bank.h"
 #include "base.h"
 #include "mark.h"
 
-void orca_run(Gbuffer gbuf, Mbuffer markmap, Usz height, Usz width);
+void orca_run(Gbuffer gbuf, Mbuffer markmap, Usz height, Usz width, Bank* bank);