From deb6c235ce456e362a7e21da38d21a84badddb12 Mon Sep 17 00:00:00 2001 From: Danny Yoo Date: Mon, 8 Aug 2011 12:20:03 -0400 Subject: [PATCH] trying to eliminate stupid blocks --- compiler/optimize-il.rkt | 12 ++++++++++++ js-assembler/package.rkt | 23 +++++++++++++---------- js-assembler/runtime-src/top.js | 5 ++++- 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/compiler/optimize-il.rkt b/compiler/optimize-il.rkt index c8cf883..e41988e 100644 --- a/compiler/optimize-il.rkt +++ b/compiler/optimize-il.rkt @@ -47,6 +47,18 @@ (log-debug (format "merging label ~a and ~a" last-stmt next-stmt)) (ufind:union-set a-forest last-stmt next-stmt) (loop (rest stmts) next-stmt)] + + ;; If there's a label, immediately followed by a direct Goto jump, + ;; just equate the label and the jump. + [(and (symbol? last-stmt) (GotoStatement? next-stmt)) + (define goto-target (GotoStatement-target next-stmt)) + (cond + [(Label? goto-target) + (ufind:union-set a-forest last-stmt (Label-name goto-target)) + (loop (rest stmts) next-stmt)] + [else + (loop (rest stmts) next-stmt)])] + [else (loop (rest stmts) next-stmt)])])) diff --git a/js-assembler/package.rkt b/js-assembler/package.rkt index c544001..cfb7ee1 100644 --- a/js-assembler/package.rkt +++ b/js-assembler/package.rkt @@ -256,10 +256,10 @@ MACHINE.modules[~s] = ;; package-standalone-xhtml: X output-port -> void (define (package-standalone-xhtml source-code op) (display *header* op) - (log-debug "writing the runtime") - (display (quote-cdata (get-runtime)) op) - (log-debug "writing the source code") - (display (quote-cdata (get-code source-code)) op) + (display (quote-cdata + (string-append (get-runtime) + (get-code source-code) + invoke-main-module-code)) op) (display *footer* op)) @@ -330,10 +330,10 @@ MACHINE.modules[~s] = - Example + diff --git a/js-assembler/runtime-src/top.js b/js-assembler/runtime-src/top.js index 3918c74..ece1364 100644 --- a/js-assembler/runtime-src/top.js +++ b/js-assembler/runtime-src/top.js @@ -1 +1,4 @@ -"use strict"; + +// The following contains the Whalesong runtime. + +