diff -r c02c6d409461 -r bafa63ac44a2 rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Tue May 06 11:12:40 2014 +0200 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Wed May 07 10:01:54 2014 +0200 @@ -1118,7 +1118,11 @@ break; case opc_dup: { final Variable v = smapper.get(0); - emit(smapper, this, "var @1 = @2;", smapper.pushT(v.getType()), v); + if (smapper.isDirty()) { + emit(smapper, this, "var @1 = @2;", smapper.pushT(v.getType()), v); + } else { + smapper.assign(this, v.getType(), v); + } break; } case opc_dup2: {