Fixes bugs

This commit is contained in:
Alexey Andreev 2013-12-13 17:28:30 +04:00
parent 029e98d4a0
commit 808b0d9468
6 changed files with 14 additions and 8 deletions

View File

@ -82,7 +82,7 @@ class TAbstractStringBuilder extends TObject implements TSerializable, TCharSequ
}
buffer[length++] = (char)('0' + value);
} else {
int pos = 10;
long pos = 10;
int sz = 1;
while (pos < 1000000000000000000L && pos * 10 <= value) {
pos *= 10;

View File

@ -133,6 +133,7 @@ public class DependencyChecker {
if (e != null) {
throw exceptionOccured.get();
}
executor.shutdown();
}
void achieveClass(String className) {

View File

@ -701,7 +701,7 @@ public class Renderer implements ExprVisitor, StatementVisitor {
} else if ((int)value == value) {
return "Long_fromInt(" + value + ")";
} else {
return "new Long(" + (value & 0xFFFFFFFF) + ", " + (value >>> 32) + ")";
return "new Long(" + (value & 0xFFFFFFFFL) + ", " + (value >>> 32) + ")";
}
} else {
return cst.toString();

View File

@ -2,6 +2,7 @@ package org.teavm.model.resource;
import java.util.Map;
import org.teavm.common.Mapper;
import org.teavm.javascript.ni.Remove;
import org.teavm.javascript.ni.Rename;
import org.teavm.javascript.ni.Superclass;
import org.teavm.model.*;
@ -32,6 +33,9 @@ class ClassRefsRenamer implements InstructionVisitor {
}
renamedCls.setParent(parent != null ? classNameMapper.map(parent) : null);
for (MethodHolder method : cls.getMethods()) {
if (method.getAnnotations().get(Remove.class.getName()) != null) {
continue;
}
renamedCls.addMethod(rename(method));
}
for (FieldHolder field : cls.getFields().toArray(new FieldHolder[0])) {

View File

@ -69,21 +69,22 @@ public class ProgramParser {
private void prepareParameters(MethodNode method) {
int var = 0;
int offset = 0;
if ((method.access & Opcodes.ACC_STATIC) == 0) {
getVariable(var++);
++offset;
}
ValueType[] desc = MethodDescriptor.parse(method.desc).getParameterTypes();
int mappedLocal = 0;
localsMap = new int[desc.length * 2];
localsMap = new int[desc.length * 2 + 1];
for (int i = 0; i < desc.length; ++i) {
ValueType paramType = desc[i];
localsMap[mappedLocal++] = i;
localsMap[var] = i + offset;
getVariable(var++);
if (paramType instanceof ValueType.Primitive) {
switch (((ValueType.Primitive)paramType).getKind()) {
case LONG:
case DOUBLE:
localsMap[mappedLocal++] = i;
localsMap[var] = i + offset;
getVariable(var++);
break;
default:
@ -91,7 +92,7 @@ public class ProgramParser {
}
}
}
localsMap = Arrays.copyOf(localsMap, mappedLocal);
localsMap = Arrays.copyOf(localsMap, var);
}
private void prepare(MethodNode method) {

View File

@ -255,7 +255,7 @@ Long = function(lo, hi) {
}
Long_ZERO = new Long(0, 0);
Long_fromInt = function(val) {
return new Long(val, 0);
return val >= 0 ? new Long(val, 0) : new Long(val, -1);
}
Long_fromNumber = function(val) {
return new Long(val | 0, (val / 0x100000000) | 0);