# HG changeset patch # User Jaroslav Tulach # Date 1351633398 -3600 # Node ID 0b7c9b5b8079cb8649f3c4b4d788f98b29b56ab0 # Parent 15df78d24302c276782a1b75db665f9251b022ea Shorter prototype methods diff -r 15df78d24302 -r 0b7c9b5b8079 vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Tue Oct 30 22:35:32 2012 +0100 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Tue Oct 30 22:43:18 2012 +0100 @@ -121,24 +121,26 @@ out.append("\n}\n\nfunction ").append(className).append("_proto() {"); out.append("\n if (").append(className). append(".prototype.$instOf_").append(className).append(") {"); - out.append("\n return ").append(className).append(".prototype;"); + out.append("\n return new ").append(className).append(";"); out.append("\n }"); ClassName sc = jc.getSuperClass(); if (sc != null) { - out.append("\n ").append(sc.getInternalName().replace('/', '_')).append("_proto();"); - out.append("\n ").append(className) - .append(".prototype = new ").append(sc.getInternalName().replace('/', '_')).append(';'); + out.append("\n var p = ").append(className) + .append(".prototype = "). + append(sc.getInternalName().replace('/', '_')).append("_proto();"); + } else { + out.append("\n var p = ").append(className).append(".prototype"); } for (Method m : jc.getMethods()) { if (!m.getName().contains("") && !m.getName().contains("")) { - compiler.generateMethodReference("\n " + className + ".prototype.", m); + compiler.generateMethodReference("\n p.", m); } } - out.append("\n " + className + ".prototype.$instOf_").append(className).append(" = true;"); + out.append("\n p.$instOf_").append(className).append(" = true;"); for (ClassName superInterface : jc.getInterfaces()) { - out.append("\n " + className + ".prototype.$instOf_").append(superInterface.getInternalName().replace('/', '_')).append(" = true;"); + out.append("\n p.$instOf_").append(superInterface.getInternalName().replace('/', '_')).append(" = true;"); } - out.append("\n return ").append(className).append(".prototype;"); + out.append("\n return new ").append(className).append(";"); out.append("\n}"); out.append("\n").append(className).append("_proto();"); StringBuilder sb = new StringBuilder();