From 753c136696402d156d7eb558d2484dd5fcbab713 Mon Sep 17 00:00:00 2001 From: adam Date: Tue, 9 Mar 2004 07:01:17 +0000 Subject: [PATCH] fixed statics bug darcs-hash:20040309070117-5007d-7f1a54dbab20dedc0b5ea63769e59ae92f0ec70c.gz --- Makefile | 28 +++++++++++++++++++--------- Makefile.upstream | 4 ++-- src/org/ibex/Ibex.java | 12 +++++++----- src/org/ibex/Scheduler.java | 2 -- src/org/ibex/Template.java | 17 ++--------------- 5 files changed, 30 insertions(+), 33 deletions(-) diff --git a/Makefile b/Makefile index 3d823cb..811ea86 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ ifeq ($(platform),) # default -platform := JVM +platform := Java2 endif target_Darwin := powerpc-apple-darwin @@ -16,7 +16,7 @@ target_Solaris := sparc-sun-solaris2.7 target_Linux := i686-pc-linux-gnu target := $(target_$(platform)) -all: JVM Linux Win32 Darwin Solaris +all: Java2 Linux Win32 Darwin Solaris clean: ; rm -rf build dist-clean: @@ -32,7 +32,8 @@ libwing_Solaris := -Lupstream/install/sparc-sun-solaris2.7/lib/ libwing_Solaris += upstream/install/sparc-sun-solaris2.7/lib/libWINGs.a libwing_Solaris += upstream/install/sparc-sun-solaris2.7/lib/libwraster.a -JVM: build/JVM/ibex.jar +Java2: build/JVM/ibex.jar +JVM:; make Java2 Linux: ; make gcj platform=Linux link_flags="$(libwing_Linux) -lXpm -lX11 -lXext" Solaris: ; make gcj platform=Solaris link_flags="$(libwing_Solaris) -lXpm -lX11 -lXext -lpthread" Win32: ; make gcj platform=Win32 link_flags="-Wl,--subsystem,windows -lcomdlg32" @@ -93,10 +94,11 @@ plat_classes_Linux := org.ibex.plat.Linux $(plat_classes_X11) plat_classes_Solaris := org.ibex.plat.Solaris $(plat_classes_X11) plat_classes_Darwin := org.ibex.plat.Darwin org.ibex.plat.OpenGL $(plat_classes_POSIX) -bleh:; @echo $(plat_classes_$(platform)) -java_src_sources := $(patsubst %,src/%.java,$(subst .,/,$(plat_classes_$(platform)))) -java_src_sources += $(shell find src -name '*.java' | grep -v Preprocessor | grep -v /plat/) +plat_java_src_sources := src/org/ibex/plat/$(platform).java +java_src_sources := $(shell find src -name '*.java' | grep -v Preprocessor | grep -v plat) +java_src_sources += $(plat_java_src_sources) java_sources := $(patsubst src/%.java, build/java/%.java, $(java_src_sources)) + java_sources += build/java/org/xwt/mips/Errno.java java_sources += build/java/org/xwt/mips/Unistd.java java_sources += build/java/org/xwt/mips/Syscalls.java @@ -127,10 +129,18 @@ build/java/org/xwt/mips/%: ### Java Source Files ############################################################################## +ifeq ($(platform),Java2) +.preprocessor: src/org/ibex/util/Preprocessor.java src/org/ibex/util/Vec.java src/gnu/regexp/*.java + @make .jikes + @mkdir -p build/class/org/ibex/util build/class/gnu/regexp + ./.jikes $^ -d build/class + @touch $@ +else .preprocessor: src/org/ibex/util/Preprocessor.java src/org/ibex/util/Vec.java src/gnu/regexp/*.java @mkdir -p build/class/org/ibex/util build/class/gnu/regexp $(gcj) -Isrc -C $^ -d build/class @touch $@ +endif build/cc/%.cc: src/%.c ; @echo linking $@; mkdir -p $(@D); ln -fs `echo $(@D)/ | sed 's_[^/]*//*_../_g'`/$< $@ build/res/%: src/% ; @echo linking $@; mkdir -p $(@D); ln -fs `echo $(@D)/ | sed 's_[^/]*//*_../_g'`/$< $@ build/java/org/ibex/%.java: src/org/ibex/%.java .preprocessor @@ -153,8 +163,8 @@ build/class/org/ibex/translators/MIPSApps.class: build/mips/mipsapps.mips .jikes compile: .compile .compile: .install_mips2java .download_bcel-5.1 $(java_sources) $(java_classes); touch $@ -ifeq ($(platform),JVM) -build/class/%.class: build/java/%.java .jikes +ifeq ($(platform),Java2) +build/class/%.class: .preprocessor $(java_sources) .jikes @echo -e "\n\033[1mcompiling .java -> .class: $<\033[0m" rm -rf build/class mkdir -p build/class @@ -166,7 +176,7 @@ build/class/%.class: build/java/%.java $(gcj) -I$(bcel_jar) -C -O0 $< -d build/class endif -build/JVM/ibex.jar: build/res/builtin.jar build/class/org/ibex/translators/MIPSApps.class +build/JVM/ibex.jar: .compile build/res/builtin.jar build/class/org/ibex/translators/MIPSApps.class @echo -e "\n\033[1marchiving .class -> .jar: build/JVM/ibex.jar\033[0m" mkdir -p build/JVM echo -e "Manifest-Version: 1.0\nMain-Class: org.ibex.Main\n" > build/JVM/.manifest diff --git a/Makefile.upstream b/Makefile.upstream index fbbaa10..7c85a3a 100644 --- a/Makefile.upstream +++ b/Makefile.upstream @@ -217,9 +217,9 @@ endif @echo -e "\n\033[1mdetecting your jikes installation...\033[0m" echo "#!/bin/sh" > .jikes ifeq ($(shell javac -version 2>&1 | head -n 1),javac 1.5.0-beta) - echo -n 'PATH=upstream/install/bin:$$PATH javac -classpath lib/libgcj-minimal.jar:build/class $$@ -d build/class/ -sourcepath build/java/:upstream/mips:upstream/mips/build:src' >> .jikes + echo -n 'PATH=upstream/install/bin:$$PATH javac -classpath upstream/bcel-5.1/src/bcel-5.1.jar:build/class $$@ -d build/class/ -sourcepath build/java/:upstream/mips:upstream/mips/build:src' >> .jikes else - echo -n 'PATH=upstream/install/bin:$$PATH jikes -classpath lib/libgcj-minimal.jar:build/class $$@ -d build/class/ -sourcepath build/java/:upstream/mips:upstream/mips/build:src ' >> .jikes + echo -n 'PATH=upstream/install/bin:$$PATH jikes -classpath upstream/bcel-5.1/src/bcel-5.1.jar:build/class $$@ -d build/class/ -sourcepath build/java/:upstream/mips:upstream/mips/build:src ' >> .jikes (type jikes && (jikes --version | grep "Version 1.18")) || make .install_jikes-1.18_ target= echo -n "$(jikes_flags) -bootclasspath " >> .jikes echo "public class GetBootClassPath { public static void main(String[] s) { " > GetBootClassPath.java diff --git a/src/org/ibex/Ibex.java b/src/org/ibex/Ibex.java index 0aea062..d1e3284 100644 --- a/src/org/ibex/Ibex.java +++ b/src/org/ibex/Ibex.java @@ -329,10 +329,15 @@ public final class Ibex extends JS.Cloneable { private Template t = null; public Object parentkey = null; public Blessing parent = null; + private Hash cache = new Hash(); public Blessing(JS.Cloneable clonee, Ibex ibex, Blessing parent, Object parentkey) { super(clonee); this.ibex = ibex; this.parentkey = parentkey; this.parent = parent; } public Object get(Object key) throws JSExn { - return key.equals("") ? ((Object)getStatic()) : (new Blessing((JS.Cloneable)clonee.get(key), ibex, this, key)); + if (key.equals("")) return ((Object)getStatic()); + if (cache.get(key) != null) return cache.get(key); + Object ret = new Blessing((JS.Cloneable)clonee.get(key), ibex, this, key); + cache.put(key, ret); + return ret; } public static Blessing getBlessing(Object o) { if (!(o instanceof JS)) return null; @@ -356,10 +361,7 @@ public final class Ibex extends JS.Cloneable { } public JSScope getStatic() { try { - // FIXME background? - System.out.println("parentkey.t == " + parentkey + ".t"); - if (t == null) - t = Template.buildTemplate(parentkey + ".t", parent.get(parentkey + ".t"), ibex); + if (t == null) t = Template.buildTemplate(parentkey + ".t", parent.get(parentkey + ".t"), ibex); return t.staticScope; } catch (Exception e) { Log.error(this, e); diff --git a/src/org/ibex/Scheduler.java b/src/org/ibex/Scheduler.java index 46b076a..358a0f7 100644 --- a/src/org/ibex/Scheduler.java +++ b/src/org/ibex/Scheduler.java @@ -60,7 +60,6 @@ public class Scheduler { protected static Queue runnable = new Queue(50); public void defaultRun() { while(true) { - System.out.println("enter"); current = (Task)runnable.remove(true); try { // FIXME hideous @@ -89,7 +88,6 @@ public class Scheduler { t.printStackTrace(); } // if an Error is thrown it will cause the engine to quit - System.out.println("leave"); } } } diff --git a/src/org/ibex/Template.java b/src/org/ibex/Template.java index 28ff215..0461dbc 100644 --- a/src/org/ibex/Template.java +++ b/src/org/ibex/Template.java @@ -155,31 +155,19 @@ public class Template { String initial_uri = ""; public TemplateHelper(String sourceName, Object s, Ibex ibex) throws XML.Exn, IOException, JSExn { - System.out.println("1"); this.sourceName = sourceName; - System.out.println("2"); this.ibex = ibex; - System.out.println("3"); InputStream is = Stream.getInputStream(s); - System.out.println("4"); Ibex.Blessing b = Ibex.Blessing.getBlessing(s).parent; - System.out.println("5"); - /* while(b != null) { if(b.parentkey != null) initial_uri = b.parentkey + (initial_uri.equals("") ? "" : "." + initial_uri); b = b.parent; } - */ initial_uri = ""; - System.out.println("6"); parse(new InputStreamReader(is)); - System.out.println("7"); JS staticScript = parseScript(static_content, static_content_start); - System.out.println("8"); t.staticScope = new PerInstantiationScope(null, ibex, null, null); - System.out.println("9"); if (staticScript != null) JS.cloneWithNewParentScope(staticScript, t.staticScope).call(null, null, null, null, 0); - System.out.println("10"); } private JS parseScript(StringBuffer content, int content_start) throws IOException { @@ -245,11 +233,10 @@ public class Template { // process attributes into Vecs, dealing with any XML Namespaces in the process ATTR: for (int i=0; i < c.getAttrLen(); i++) { - //#switch(c.getAttrKey(i)) - case "id": + if (c.getAttrKey(i).equals("id")) { t.id = c.getAttrVal(i).toString().intern(); continue ATTR; - //#end + } // treat value starting with '.' as resource reference String uri = c.getAttrUri(i); if (!uri.equals("")) uri = '.' + uri; -- 1.7.10.4