+void report_sheap_usage (int die_if_pure_storage_exceeded);
+void
+report_sheap_usage (int die_if_pure_storage_exceeded)
+{
+ int rc = 0;
+
+ size_t lost = (STATIC_HEAP_BASE + STATIC_HEAP_SLOP + SHEAP_ADJUSTMENT)
+ - (static_heap_ptr - static_heap_buffer);
+ char buf[200];
+ sprintf (buf, "Static heap usage: %ld of %ld",
+ (long) (static_heap_ptr - static_heap_buffer),
+ (long) (STATIC_HEAP_BASE + STATIC_HEAP_SLOP + SHEAP_ADJUSTMENT));
+
+ if (lost > STATIC_HEAP_SLOP) {
+ sprintf (buf + strlen (buf), " -- %ldk wasted", (long)(lost/1024));
+ if (die_if_pure_storage_exceeded) {
+ sheap_adjust_h();
+ rc = -1;
+ }
+ message ("%s", buf);
+ }
+
+ if (rc < 0) {
+ unlink("SATISFIED");
+ fatal ("Static heap size adjusted, Don't Panic! I will restart the `make'");
+ }
+}
+
+