c_sources := $(jpeg_c_sources:%.c=src/org/ijg/%.c)
# outputs
-java_classes := $(java_sources:src/%.java=bin/%.class)
java_objects := $(filter-out bin-$(platform)/org/xwt/plat/%, $(java_sources:src/%.java=bin-$(platform)/%.java.o))
java_objects += bin-$(platform)/org/xwt/plat/GCJ.java.o
java_objects += $(platform_java_sources:%=bin-$(platform)/org/xwt/plat/%.java.o)
## Platform-Neutral ###########################################################################
ifneq ($(verbose),true)
-.SILENT: $(java_classes) $(cc_objects) $(java_objects) $(java_headers) all bin/org/xwt/builtin.xwar .bootclasspath .javac $(target_bin)
+.SILENT: $(cc_objects) $(java_objects) $(java_headers) all bin/org/xwt/builtin.xwar .bootclasspath .javac $(target_bin) compile
silent := --silent
endif
-compile: $(java_classes) bin/org/xwt/builtin.xwar
+compile: bin/org/xwt/builtin.xwar
+ echo "compiling .java -> .class:"
+ mkdir -p bin
+ $(shell cat .javac) -classpath lib/libgcj-minimal.jar $(java_sources) -d bin/ 2>&1 | \
+ grep -v ^\\[read | sed s_^\\[write\ bin/__ | sed s_.class\\]_.java_ | sed "s_^_compiling .java -> .class: src/_"
# platforms
all: Win32 Linux Java2 Darwin Carbon
cd jikes-1.18; ./configure --prefix=`pwd` && make && make install
ln -sf jikes-1.18/bin/jikes .jikes
-$(java_classes): $(java_sources) .javac
- echo "compiling .java -> .class:"
- mkdir -p bin
- $(shell cat .javac) -classpath lib/libgcj-minimal.jar $(java_sources) -d bin/ 2>&1 | \
- grep -v ^\\[read | sed s_^\\[write\ bin/__ | sed s_.class\\]_.java_ | sed "s_^_compiling .java -> .class: src/_"
-
bin/org/xwt/builtin.xwar: $(xwar_sources)
mkdir -p bin/org/xwt
cd src; $(jar) cf ../bin/org/xwt/builtin.xwar $(xwar_sources:src/%=%)
$(shell pwd)/gcc/install/bin/$(target)-gcj:
make -C gcc
-# java_classes is here to force compilation of the .class files (they get used via -Ibin/) without
+# compile is here to force compilation of the .class files (they get used via -Ibin/) without
# having the individual .o's depend on the .java's (otherwise every .o gets recompiled when one .java changes)
-gcj: $(gcc_path)/bin/$(target)-gcj $(java_classes) $(target_bin)
+gcj: $(gcc_path)/bin/$(target)-gcj compile $(target_bin)
$(target_bin): $(java_objects) $(cc_objects) $(c_objects) bin-$(platform)/org/xwt/builtin.o
@echo "linking .o -> $(target_bin)"
platform_link="$(gcc_path)/lib/libgcj.a -Xlinker -framework -Xlinker Carbon" \
platform_java_sources="POSIX Carbon"
-Java2: $(java_classes) bin/org/xwt/builtin.xwar
+Java2: compile bin/org/xwt/builtin.xwar
echo -e "\\n=== Java2 ========================================="
echo "archiving .class -> .jar"
mkdir -p bin-Java2
static Hash imageToNameMap = new Hash();
/** the empty object, used for get-traps */
- private static JS.Array emptyobj = new JS.Array();
+ private static Array emptyobj = new Array();
// Instance Data: Templates ////////////////////////////////////////////////////////
// Instance Data: IndexOf ////////////////////////////////////////////////////////////
/** The indexof() Function; created lazily */
- public JS.Function indexof = null;
- public JS.Function indexof() { if (indexof == null) indexof = new IndexOf(); return indexof; }
+ public JS.Callable indexof = null;
+ public JS.Callable indexof() { if (indexof == null) indexof = new IndexOf(); return indexof; }
/** a trivial private class to serve as the box.indexof function object */
- private class IndexOf extends JS.Function {
- public IndexOf() { super(-1, "java", null, null); this.setSeal(true); }
- public Object _call(JS.Array args) throws JS.Exn {
+ private class IndexOf extends JS.Callable {
+ public IndexOf() { this.setSeal(true); }
+ public Object call(Array args) throws JS.Exn {
if (args.length() != 1 || args.elementAt(0) == null || !(args.elementAt(0) instanceof Box)) return new Integer(-1);
Box b = (Box)args.elementAt(0);
if (b.getParent() != Box.this) {
}
/** loads the image described by string str, possibly blocking for a network load */
- static ImageDecoder getImage(String str, final Function callback) {
+ static ImageDecoder getImage(String str, final JS.Callable callback) {
if (str.indexOf(':') == -1) {
String s = str;
if (ret != -1) bytesDownloaded += ret;
if (clear && callback != null) {
clear = false;
- ThreadMessage.newthread(new JS.Function(-1, "java", null, null) {
- public Object _call(JS.Array args_) throws JS.Exn {
+ ThreadMessage.newthread(new JS.Callable() {
+ public Object call(Array args_) throws JS.Exn {
try {
- JS.Array args = new JS.Array();
+ Array args = new Array();
args.addElement(new Double(bytesDownloaded));
args.addElement(new Double(contentLength));
callback.call(args);
} else {
image = getPicture(s);
if (image == null) {
- if (Log.on) Log.log(Box.class, "unable to load image " + s + " at " + JS.getCurrentFunctionSourceName());
+ if (Log.on) Log.log(Box.class, "unable to load image " + s + " at " + Context.getCurrentSourceNameAndLine());
return;
}
if (sizetoimage) syncSizeToImage();
if (border == null) {
ImageDecoder id = getImage(s, null);
if (id == null) {
- if (Log.on) Log.log(this, "unable to load border image " + s + " at " + JS.getCurrentFunctionSourceName());
+ if (Log.on) Log.log(this, "unable to load border image " + s + " at " + Context.getCurrentSourceNameAndLine());
return;
}
int[] data = id.getData();
}
/** creates a new box from an anonymous template; <tt>ids</tt> is passed through to Template.apply() */
- Box(Template anonymous, Vec pboxes, Vec ptemplates, Function callback, int numerator, int denominator) {
+ Box(Template anonymous, Vec pboxes, Vec ptemplates, JS.Callable callback, int numerator, int denominator) {
super(null);
set(dmax, 0, Integer.MAX_VALUE);
set(dmax, 1, Integer.MAX_VALUE);
/** creates a new box from an unresolved templatename and an importlist; use "box" for an untemplatized box */
public Box(String templatename, String[] importlist) { this(templatename, importlist, null); }
- public Box(String templatename, String[] importlist, Function callback) {
+ public Box(String templatename, String[] importlist, JS.Callable callback) {
super(null);
set(dmax, 0, Integer.MAX_VALUE);
set(dmax, 1, Integer.MAX_VALUE);
for(Box cur = this; cur != null && (cur == this || cur == this.getParent()); cur = cur.getParent()) {
cur.dirty(pos(0) + min(oldsize(0) - bw, size(0) - bw),
pos(1),
- Math.abs(oldsize(0) - size(0)) + bw,
+ java.lang.Math.abs(oldsize(0) - size(0)) + bw,
max(oldsize(1), size(1)));
cur.dirty(pos(0),
pos(1) + min(oldsize(1) - bh, size(1) - bh),
max(oldsize(0), size(0)),
- Math.abs(oldsize(1) - size(1)) + bh);
+ java.lang.Math.abs(oldsize(1) - size(1)) + bh);
}
// SLOWPATH: dirty ourselves, as well as our former position on our parent
if (++surface.sizePosChangesSinceLastRender >= 500) {
if (surface.sizePosChangesSinceLastRender == 500) {
if (Log.on) Log.log(this, "Warning, more than 500 SizeChange/PosChange traps triggered since last complete render");
- if (Log.on) Log.log(this, " interpreter is at " + JS.getCurrentFunctionSourceName());
+ if (Log.on) Log.log(this, " interpreter is at " + Context.getCurrentSourceNameAndLine());
/*
try {
Trap t = sizechange ? Trap.getTrap(this, "SizeChange") : Trap.getTrap(this, "PosChange");
- InterpretedFunction f = (InterpretedFunction)t.f;
+ InterpretedJS.Callable f = (InterpretedJS.Callable)t.f;
if (Log.on) Log.log(this, "Current trap is at " + f.getSourceName() + ":" + f.getLineNumbers()[0]);
} catch (Throwable t) { }
*/
public void put(int i, Object value) {
if (value != null && !(value instanceof Box)) {
- if (Log.on) Log.log(this, "attempt to set a numerical property on a box to anything other than a box at " + JS.getCurrentFunctionSourceName());
+ if (Log.on) Log.log(this, "attempt to set a numerical property on a box to anything other than a box at " + Context.getCurrentSourceNameAndLine());
} else if (redirect == null) {
- if (Log.on) Log.log(this, "attempt to add/remove children to/from a node with a null redirect at " + JS.getCurrentFunctionSourceName());
+ if (Log.on) Log.log(this, "attempt to add/remove children to/from a node with a null redirect at " + Context.getCurrentSourceNameAndLine());
} else if (redirect != this) {
Box b = value == null ? (Box)redirect.get(i) : (Box)value;
redirect.put(i, value);
}
} else if (value instanceof RootProxy) {
- if (Log.on) Log.log(this, "attempt to reparent a box via its proxy object at " + JS.getCurrentFunctionSourceName());
+ if (Log.on) Log.log(this, "attempt to reparent a box via its proxy object at " + Context.getCurrentSourceNameAndLine());
} else {
Box newnode = (Box)value;
for(Box cur = newnode.getParent(); cur != null; cur = cur.getParent())
if (cur.redirect == newnode) {
if (Log.on) Log.log(this, "attempt to move a box that is the target of a redirect at "+
- JS.getCurrentFunctionSourceName());
+ Context.getCurrentSourceNameAndLine());
return;
}
for(Box cur = this; cur != null; cur = cur.getParent())
if (cur == newnode) {
if (Log.on) Log.log(this, "attempt to make a node a parent of its own ancestor at " +
- JS.getCurrentFunctionSourceName());
+ Context.getCurrentSourceNameAndLine());
if (Log.on) Log.log(this, "box == " + this + " ancestor == " + newnode);
return;
}
Object ret = super.get(name);
if (name.startsWith("$") && ret == null)
if (Log.on) Log.log(this, "WARNING: attempt to access " + name + ", but no child with id=\"" + name.substring(1) + "\" found; " +
- JS.getFileAndLine());
+ Context.getCurrentSourceNameAndLine());
return ret;
}
String name = (String)name_;
if (name == null) return; // FIXME, shouldn't be necessary
if (name.startsWith("xwt_")) {
- if (Log.on) Log.log(this, "attempt to set reserved property " + name + " at " + JS.getFileAndLine());
+ if (Log.on) Log.log(this, "attempt to set reserved property " + name + " at " + Context.getCurrentSourceNameAndLine());
return;
}
if (!ignoretraps && traps != null) {
Trap t = (Trap)traps.get(name);
if (t != null) {
- JS.Array arg = new JS.Array();
+ Array arg = new Array();
arg.addElement(value);
t.perform(arg);
arg.setElementAt(null, 0);
}
if (name.charAt(0) == '_') {
- if (value != null && !(value instanceof Function)) {
+ if (value != null && !(value instanceof JS.Callable)) {
if (Log.on) Log.log(this, "attempt to put a non-function value (" + value + ") to " +
- name + " at " + JS.getFileAndLine());
+ name + " at " + Context.getCurrentSourceNameAndLine());
} else if (name.charAt(1) == '_') {
name = name.substring(2).intern();
Trap t = Trap.getTrap(this, name);
if (t != null) t.delete();
- if (value != null) Trap.addTrap(this, name, ((Function)value), true, rp);
+ if (value != null) Trap.addTrap(this, name, ((CompiledFunction)value), true, rp);
} else {
name = name.substring(1).intern();
Trap t = Trap.getTrap(this, name);
if (t != null) t.delete();
- if (value != null) Trap.addTrap(this, name, ((Function)value), false, rp);
+ if (value != null) Trap.addTrap(this, name, ((CompiledFunction)value), false, rp);
}
return;
}