Minor, unindent code

This commit is contained in:
Alexander Udalov
2013-12-16 18:01:07 +04:00
parent 22bc499b96
commit ece549b4d4
@@ -673,134 +673,134 @@ public abstract class StackValue {
public void dupReceiver(InstructionAdapter v) { public void dupReceiver(InstructionAdapter v) {
if (isStandardStack(resolvedGetCall, 1) && isStandardStack(resolvedSetCall, 2)) { if (isStandardStack(resolvedGetCall, 1) && isStandardStack(resolvedSetCall, 2)) {
v.dup2(); // collection and index v.dup2(); // collection and index
return;
} }
else {
int size = 0; int size = 0;
// ugly hack: getting the last variable index // ugly hack: getting the last variable index
int lastIndex = frame.enterTemp(Type.INT_TYPE); int lastIndex = frame.enterTemp(Type.INT_TYPE);
frame.leaveTemp(Type.INT_TYPE); frame.leaveTemp(Type.INT_TYPE);
// indexes // indexes
List<ValueParameterDescriptor> valueParameters = resolvedGetCall.getResultingDescriptor().getValueParameters(); List<ValueParameterDescriptor> valueParameters = resolvedGetCall.getResultingDescriptor().getValueParameters();
int firstParamIndex = -1; int firstParamIndex = -1;
for (int i = valueParameters.size() - 1; i >= 0; --i) { for (int i = valueParameters.size() - 1; i >= 0; --i) {
Type type = codegen.typeMapper.mapType(valueParameters.get(i).getType()); Type type = codegen.typeMapper.mapType(valueParameters.get(i).getType());
int sz = type.getSize(); int sz = type.getSize();
frame.enterTemp(type); frame.enterTemp(type);
lastIndex += sz; lastIndex += sz;
size += sz; size += sz;
v.store((firstParamIndex = lastIndex) - sz, type); v.store((firstParamIndex = lastIndex) - sz, type);
} }
List<TypeParameterDescriptor> typeParameters = resolvedGetCall.getResultingDescriptor().getTypeParameters(); List<TypeParameterDescriptor> typeParameters = resolvedGetCall.getResultingDescriptor().getTypeParameters();
int firstTypeParamIndex = -1; int firstTypeParamIndex = -1;
for (int i = typeParameters.size() - 1; i >= 0; --i) { for (int i = typeParameters.size() - 1; i >= 0; --i) {
if (typeParameters.get(i).isReified()) { if (typeParameters.get(i).isReified()) {
frame.enterTemp(OBJECT_TYPE);
lastIndex++;
size++;
v.store(firstTypeParamIndex = lastIndex - 1, OBJECT_TYPE);
}
}
ReceiverValue receiverParameter = resolvedGetCall.getReceiverArgument();
int receiverIndex = -1;
if (receiverParameter.exists()) {
Type type = codegen.typeMapper.mapType(receiverParameter.getType());
int sz = type.getSize();
frame.enterTemp(type);
lastIndex += sz;
size += sz;
v.store((receiverIndex = lastIndex) - sz, type);
}
ReceiverValue thisObject = resolvedGetCall.getThisObject();
int thisIndex = -1;
if (thisObject.exists()) {
frame.enterTemp(OBJECT_TYPE); frame.enterTemp(OBJECT_TYPE);
lastIndex++; lastIndex++;
size++; size++;
v.store((thisIndex = lastIndex) - 1, OBJECT_TYPE); v.store(firstTypeParamIndex = lastIndex - 1, OBJECT_TYPE);
} }
}
// for setter ReceiverValue receiverParameter = resolvedGetCall.getReceiverArgument();
int receiverIndex = -1;
if (receiverParameter.exists()) {
Type type = codegen.typeMapper.mapType(receiverParameter.getType());
int sz = type.getSize();
frame.enterTemp(type);
lastIndex += sz;
size += sz;
v.store((receiverIndex = lastIndex) - sz, type);
}
int realReceiverIndex; ReceiverValue thisObject = resolvedGetCall.getThisObject();
Type realReceiverType; int thisIndex = -1;
if (thisIndex != -1) { if (thisObject.exists()) {
if (receiverIndex != -1) { frame.enterTemp(OBJECT_TYPE);
realReceiverIndex = receiverIndex; lastIndex++;
realReceiverType = codegen.typeMapper.mapType(receiverParameter.getType()); size++;
} v.store((thisIndex = lastIndex) - 1, OBJECT_TYPE);
else { }
realReceiverIndex = thisIndex;
realReceiverType = OBJECT_TYPE; // for setter
}
int realReceiverIndex;
Type realReceiverType;
if (thisIndex != -1) {
if (receiverIndex != -1) {
realReceiverIndex = receiverIndex;
realReceiverType = codegen.typeMapper.mapType(receiverParameter.getType());
} }
else { else {
if (receiverIndex != -1) { realReceiverIndex = thisIndex;
realReceiverType = codegen.typeMapper.mapType(receiverParameter.getType()); realReceiverType = OBJECT_TYPE;
realReceiverIndex = receiverIndex;
}
else {
throw new UnsupportedOperationException();
}
} }
}
else {
if (receiverIndex != -1) {
realReceiverType = codegen.typeMapper.mapType(receiverParameter.getType());
realReceiverIndex = receiverIndex;
}
else {
throw new UnsupportedOperationException();
}
}
if (resolvedSetCall.getThisObject().exists()) { if (resolvedSetCall.getThisObject().exists()) {
if (resolvedSetCall.getReceiverArgument().exists()) { if (resolvedSetCall.getReceiverArgument().exists()) {
codegen.generateFromResolvedCall(resolvedSetCall.getThisObject(), OBJECT_TYPE); codegen.generateFromResolvedCall(resolvedSetCall.getThisObject(), OBJECT_TYPE);
} }
v.load(realReceiverIndex - realReceiverType.getSize(), realReceiverType);
}
else {
if (resolvedSetCall.getReceiverArgument().exists()) {
v.load(realReceiverIndex - realReceiverType.getSize(), realReceiverType); v.load(realReceiverIndex - realReceiverType.getSize(), realReceiverType);
} }
else { else {
if (resolvedSetCall.getReceiverArgument().exists()) { throw new UnsupportedOperationException();
v.load(realReceiverIndex - realReceiverType.getSize(), realReceiverType); }
} }
else {
throw new UnsupportedOperationException(); int index = firstParamIndex;
for (int i = 0; i != valueParameters.size(); ++i) {
Type type = codegen.typeMapper.mapType(valueParameters.get(i).getType());
int sz = type.getSize();
v.load(index - sz, type);
index -= sz;
}
// restoring original
if (thisIndex != -1) {
v.load(thisIndex - 1, OBJECT_TYPE);
}
if (receiverIndex != -1) {
Type type = codegen.typeMapper.mapType(receiverParameter.getType());
v.load(receiverIndex - type.getSize(), type);
}
if (firstTypeParamIndex != -1) {
index = firstTypeParamIndex;
for (int i = 0; i != typeParameters.size(); ++i) {
if (typeParameters.get(i).isReified()) {
v.load(index - 1, OBJECT_TYPE);
index--;
} }
} }
}
int index = firstParamIndex; index = firstParamIndex;
for (int i = 0; i != valueParameters.size(); ++i) { for (int i = 0; i != valueParameters.size(); ++i) {
Type type = codegen.typeMapper.mapType(valueParameters.get(i).getType()); Type type = codegen.typeMapper.mapType(valueParameters.get(i).getType());
int sz = type.getSize(); int sz = type.getSize();
v.load(index - sz, type); v.load(index - sz, type);
index -= sz; index -= sz;
} }
// restoring original for (int i = 0; i < size; i++) {
if (thisIndex != -1) { frame.leaveTemp(OBJECT_TYPE);
v.load(thisIndex - 1, OBJECT_TYPE);
}
if (receiverIndex != -1) {
Type type = codegen.typeMapper.mapType(receiverParameter.getType());
v.load(receiverIndex - type.getSize(), type);
}
if (firstTypeParamIndex != -1) {
index = firstTypeParamIndex;
for (int i = 0; i != typeParameters.size(); ++i) {
if (typeParameters.get(i).isReified()) {
v.load(index - 1, OBJECT_TYPE);
index--;
}
}
}
index = firstParamIndex;
for (int i = 0; i != valueParameters.size(); ++i) {
Type type = codegen.typeMapper.mapType(valueParameters.get(i).getType());
int sz = type.getSize();
v.load(index - sz, type);
index -= sz;
}
for (int i = 0; i < size; i++) {
frame.leaveTemp(OBJECT_TYPE);
}
} }
} }