From 1a011c3f9ba8515554927a8e4452544ccddb96a1 Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Thu, 27 Feb 2014 18:27:21 +0400 Subject: [PATCH] Code clean and simplification --- .../jet/codegen/inline/FieldAccess.java | 47 ---------- .../jet/codegen/inline/InlineCodegen.java | 6 +- .../jet/codegen/inline/InlineCodegenUtil.java | 85 ++++++++++--------- ...InliningInfo.java => InliningContext.java} | 10 +-- .../jet/codegen/inline/LambdaTransformer.java | 15 ++-- .../jet/codegen/inline/MaxCalcNode.java | 3 +- .../jet/codegen/inline/MethodInliner.java | 6 +- .../jet/codegen/inline/Parameters.java | 3 +- .../jet/codegen/inline/ParametersBuilder.java | 9 +- ...va => RegeneratedLambdaFieldRemapper.java} | 18 ++-- .../jet/codegen/inline/ShiftAdapter.java | 40 --------- .../jet/codegen/inline/TypeRemapper.java | 12 +-- 12 files changed, 82 insertions(+), 172 deletions(-) delete mode 100644 compiler/backend/src/org/jetbrains/jet/codegen/inline/FieldAccess.java rename compiler/backend/src/org/jetbrains/jet/codegen/inline/{InliningInfo.java => InliningContext.java} (86%) rename compiler/backend/src/org/jetbrains/jet/codegen/inline/{InlineFieldRemapper.java => RegeneratedLambdaFieldRemapper.java} (89%) delete mode 100644 compiler/backend/src/org/jetbrains/jet/codegen/inline/ShiftAdapter.java diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/inline/FieldAccess.java b/compiler/backend/src/org/jetbrains/jet/codegen/inline/FieldAccess.java deleted file mode 100644 index 60f94e56981..00000000000 --- a/compiler/backend/src/org/jetbrains/jet/codegen/inline/FieldAccess.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2010-2013 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.jet.codegen.inline; - -public class FieldAccess { - - private final String name; - - private final String type; - - private final FieldAccess owner; - - private final boolean isThisAccess; - - public FieldAccess(String name, String type, FieldAccess owner) { - this.name = name; - this.type = type; - this.owner = owner; - isThisAccess = false; - } - - public FieldAccess(String name, String type) { - this.name = "!this!" + name; - this.type = type; - isThisAccess = true; - owner = null; - } - - - public boolean isThisAccess() { - return isThisAccess; - } -} diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/inline/InlineCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/inline/InlineCodegen.java index 46ce5d8e6c6..f27c79503d2 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/inline/InlineCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/inline/InlineCodegen.java @@ -196,10 +196,10 @@ public class InlineCodegen implements ParentCodegenAware, CallGenerator { List captured = getAllCaptured(); - Parameters parameters = new Parameters(realParams, Parameters.addStubs(captured, realParams.size())); + Parameters parameters = new Parameters(realParams, Parameters.shiftAndAddStubs(captured, realParams.size())); - InliningInfo info = - new InliningInfo(expressionMap, null, null, null, state, + InliningContext info = + new InliningContext(expressionMap, null, null, null, state, codegen.getInlineNameGenerator().subGenerator(functionDescriptor.getName().asString()), codegen.getContext(), call, Collections.emptyMap()); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/inline/InlineCodegenUtil.java b/compiler/backend/src/org/jetbrains/jet/codegen/inline/InlineCodegenUtil.java index 70951d72e62..effdf342724 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/inline/InlineCodegenUtil.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/inline/InlineCodegenUtil.java @@ -38,12 +38,14 @@ import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.resolve.BindingContextUtils; import org.jetbrains.jet.lang.resolve.DescriptorUtils; import org.jetbrains.jet.lang.resolve.java.PackageClassUtils; +import org.jetbrains.jet.lang.resolve.kotlin.DeserializedResolverUtils; import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.Name; import java.io.IOException; import java.io.InputStream; +import java.util.Arrays; import static org.jetbrains.jet.lang.resolve.DescriptorUtils.getFqName; @@ -78,25 +80,24 @@ public class InlineCodegenUtil { @NotNull public static VirtualFile getVirtualFileForCallable(DeserializedSimpleFunctionDescriptor deserializedDescriptor, GenerationState state) { - VirtualFile file = null; - DeclarationDescriptor parentDeclatation = deserializedDescriptor.getContainingDeclaration(); - if (parentDeclatation instanceof PackageFragmentDescriptor) { + VirtualFile file; + DeclarationDescriptor parentDeclaration = deserializedDescriptor.getContainingDeclaration(); + if (parentDeclaration instanceof PackageFragmentDescriptor) { ProtoBuf.Callable proto = deserializedDescriptor.getFunctionProto(); - if (proto.hasExtension(JavaProtoBuf.implClassName)) { - Name name = deserializedDescriptor.getNameResolver().getName(proto.getExtension(JavaProtoBuf.implClassName)); - FqName namespaceFqName = - PackageClassUtils.getPackageClassFqName(((PackageFragmentDescriptor) parentDeclatation).getFqName()).parent().child( - name); - file = findVirtualFileWithHeader(state.getProject(), namespaceFqName); - } else { - assert false : "Function in namespace should have implClassName property in proto: " + deserializedDescriptor; + if (!proto.hasExtension(JavaProtoBuf.implClassName)) { + throw new IllegalStateException("Function in namespace should have implClassName property in proto: " + deserializedDescriptor); } + Name name = deserializedDescriptor.getNameResolver().getName(proto.getExtension(JavaProtoBuf.implClassName)); + FqName packagePartFqName = + PackageClassUtils.getPackageClassFqName(((PackageFragmentDescriptor) parentDeclaration).getFqName()).parent().child( + name); + file = findVirtualFileWithHeader(state.getProject(), packagePartFqName); } else { file = findVirtualFileContainingDescriptor(state.getProject(), deserializedDescriptor); } if (file == null) { - throw new RuntimeException("Couldn't find declaration file for " + deserializedDescriptor.getName()); + throw new IllegalStateException("Couldn't find declaration file for " + deserializedDescriptor.getName()); } return file; @@ -123,11 +124,7 @@ public class InlineCodegenUtil { return PackageClassUtils.getPackageClassFqName(getFqName(containerDescriptor).toSafe()); } if (containerDescriptor instanceof ClassDescriptor) { - ClassKind classKind = ((ClassDescriptor) containerDescriptor).getKind(); - if (classKind == ClassKind.CLASS_OBJECT || classKind == ClassKind.ENUM_ENTRY) { - return getContainerFqName(containerDescriptor.getContainingDeclaration()); - } - return getFqName(containerDescriptor).toSafe(); + return DeserializedResolverUtils.kotlinFqNameToJavaFqName(getFqName(containerDescriptor)); } return null; } @@ -137,9 +134,8 @@ public class InlineCodegenUtil { } private static String getInlineName(@NotNull CodegenContext codegenContext, @NotNull DeclarationDescriptor currentDescriptor, @NotNull JetTypeMapper typeMapper) { - PsiFile file; if (currentDescriptor instanceof PackageFragmentDescriptor) { - file = getContainingFile(codegenContext, typeMapper); + PsiFile file = getContainingFile(codegenContext, typeMapper); Type packagePartType; if (file == null) { @@ -158,7 +154,7 @@ public class InlineCodegenUtil { throw new RuntimeException("Couldn't find declaration for " + contextDescriptor.getContainingDeclaration().getName() + "." + contextDescriptor.getName() ); } - return packagePartType.getInternalName().replace('.', '/'); + return packagePartType.getInternalName(); } else if (currentDescriptor instanceof ClassifierDescriptor) { Type type = typeMapper.mapType((ClassifierDescriptor) currentDescriptor); @@ -172,6 +168,7 @@ public class InlineCodegenUtil { } } + //TODO: add suffix for special case String suffix = currentDescriptor.getName().isSpecial() ? "" : currentDescriptor.getName().asString(); //noinspection ConstantConditions @@ -192,15 +189,23 @@ public class InlineCodegenUtil { public static boolean isInvokeOnLambda(String owner, String name) { - return INVOKE.equals(name) && /*TODO: check type*/owner.contains("Function"); - } - - public static boolean isLambdaConstructorCall(@NotNull String internalName, @NotNull String name) { - if (!"".equals(name)) { + if (!INVOKE.equals(name)) { return false; } - return isLambdaClass(internalName); + for (String prefix : Arrays.asList("jet/Function", "jet/ExtensionFunction")) { + if (owner.startsWith(prefix)) { + String suffix = owner.substring(prefix.length()); + if (isInteger(suffix)) { + return true; + } + } + } + return false; + } + + public static boolean isLambdaConstructorCall(@NotNull String internalName, @NotNull String methodName) { + return "".equals(methodName) && isLambdaClass(internalName); } public static boolean isLambdaClass(String internalName) { @@ -212,10 +217,7 @@ public class InlineCodegenUtil { } String suffix = shortName.substring(index + 1); - for (char c : suffix.toCharArray()) { - if (!Character.isDigit(c)) return false; - } - return true; + return isInteger(suffix); } @NotNull @@ -224,19 +226,10 @@ public class InlineCodegenUtil { return index < 0 ? internalName : internalName.substring(index + 1); } - public static boolean isInitCallOfFunction(String owner, String name) { - return "".equals(name); - } - @Nullable public static PsiFile getContainingFile(CodegenContext codegenContext, JetTypeMapper typeMapper) { DeclarationDescriptor contextDescriptor = codegenContext.getContextDescriptor(); PsiElement psiElement = BindingContextUtils.descriptorToDeclaration(typeMapper.getBindingContext(), contextDescriptor); - if (psiElement == null) { - //in case of synthetic - psiElement = BindingContextUtils.descriptorToDeclaration(typeMapper.getBindingContext(), contextDescriptor); - } - if (psiElement != null) { return psiElement.getContainingFile(); } @@ -247,4 +240,18 @@ public class InlineCodegenUtil { public static MaxCalcNode wrapWithMaxLocalCalc(@NotNull MethodNode methodNode) { return new MaxCalcNode(methodNode); } + + private static boolean isInteger(@NotNull String string) { + if (string.isEmpty()) { + return false; + } + + for (int i = 0; i < string.length(); i++) { + if (!Character.isDigit(string.charAt(i))) { + return false; + } + } + + return true; + } } diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/inline/InliningInfo.java b/compiler/backend/src/org/jetbrains/jet/codegen/inline/InliningContext.java similarity index 86% rename from compiler/backend/src/org/jetbrains/jet/codegen/inline/InliningInfo.java rename to compiler/backend/src/org/jetbrains/jet/codegen/inline/InliningContext.java index 5eafafac24e..dcf857ac714 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/inline/InliningInfo.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/inline/InliningContext.java @@ -25,7 +25,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -public class InliningInfo { +public class InliningContext { public final Map expresssionMap; @@ -45,7 +45,7 @@ public class InliningInfo { public final Map typeMapping; - public InliningInfo( + public InliningContext( Map map, List accesses, List invocation, @@ -67,14 +67,14 @@ public class InliningInfo { this.typeMapping = typeMapping; } - public InliningInfo subInline(NameGenerator generator) { + public InliningContext subInline(NameGenerator generator) { return subInline(generator, Collections.emptyMap()); } - public InliningInfo subInline(NameGenerator generator, Map additionalTypeMappings) { + public InliningContext subInline(NameGenerator generator, Map additionalTypeMappings) { HashMap newTypeMappings = new HashMap(typeMapping); newTypeMappings.putAll(additionalTypeMappings); - return new InliningInfo(expresssionMap, invokeCalls, constructorInvocation, remapper, state, generator, startContext, call, + return new InliningContext(expresssionMap, invokeCalls, constructorInvocation, remapper, state, generator, startContext, call, newTypeMappings); } } diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/inline/LambdaTransformer.java b/compiler/backend/src/org/jetbrains/jet/codegen/inline/LambdaTransformer.java index 0da34da5b11..f224e29a4c1 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/inline/LambdaTransformer.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/inline/LambdaTransformer.java @@ -55,7 +55,7 @@ public class LambdaTransformer { private final MethodNode bridge; - private final InliningInfo info; + private final InliningContext info; private final Type oldLambdaType; @@ -67,7 +67,7 @@ public class LambdaTransformer { private String[] interfaces; private final boolean isSameModule; - public LambdaTransformer(String lambdaInternalName, InliningInfo info, boolean isSameModule, Type newLambdaType) { + public LambdaTransformer(String lambdaInternalName, InliningContext info, boolean isSameModule, Type newLambdaType) { this.isSameModule = isSameModule; this.state = info.state; this.typeMapper = state.getTypeMapper(); @@ -124,7 +124,8 @@ public class LambdaTransformer { Parameters parameters = getLambdaParameters(builder, invocation); MethodVisitor invokeVisitor = newMethod(classBuilder, invoke); - InlineFieldRemapper remapper = new InlineFieldRemapper(oldLambdaType.getInternalName(), newLambdaType.getInternalName(), parameters, invocation.getCapturedLambdasToInline()); + RegeneratedLambdaFieldRemapper + remapper = new RegeneratedLambdaFieldRemapper(oldLambdaType.getInternalName(), newLambdaType.getInternalName(), parameters, invocation.getCapturedLambdasToInline()); MethodInliner inliner = new MethodInliner(invoke, parameters, info.subInline(info.nameGenerator.subGenerator("lambda")), oldLambdaType, remapper, isSameModule); inliner.doInline(invokeVisitor, new VarRemapper.ParamRemapper(parameters, 0), remapper, false); @@ -177,7 +178,7 @@ public class LambdaTransformer { private ClassBuilder createClassBuilder() { return new RemappingClassBuilder(state.getFactory().forLambdaInlining(newLambdaType, info.call.getCallElement().getContainingFile()), - new TypeRemapper(info.typeMapping, isSameModule)); + new TypeRemapper(info.typeMapping)); } private static MethodVisitor newMethod(ClassBuilder builder, MethodNode original) { @@ -196,7 +197,7 @@ public class LambdaTransformer { AbstractInsnNode cur = constructor.instructions.getFirst(); cur = cur.getNext(); //skip super call - List additionalCaptured = new ArrayList(); //captured var of inlined parameter + List capturedLambdas = new ArrayList(); //captured var of inlined parameter while (cur != null) { if (cur.getType() == AbstractInsnNode.FIELD_INSN) { FieldInsnNode fieldNode = (FieldInsnNode) cur; @@ -208,7 +209,7 @@ public class LambdaTransformer { LambdaInfo lambdaInfo = indexToLambda.get(varIndex); if (lambdaInfo != null) { info.setLambda(lambdaInfo); - additionalCaptured.add(lambdaInfo); + capturedLambdas.add(lambdaInfo); } } cur = cur.getNext(); @@ -218,7 +219,7 @@ public class LambdaTransformer { //TODO: some of such parameters could be skipped - we should perform additional analysis Map capturedLambdasToInline = new HashMap(); //captured var of inlined parameter List allRecapturedParameters = new ArrayList(); - for (LambdaInfo info : additionalCaptured) { + for (LambdaInfo info : capturedLambdas) { for (CapturedParamInfo var : info.getCapturedVars()) { CapturedParamInfo recapturedParamInfo = builder.addCapturedParam(getNewFieldName(var.getFieldName()), var.getType(), true, var); recapturedParamInfo.setRecapturedFrom(info); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/inline/MaxCalcNode.java b/compiler/backend/src/org/jetbrains/jet/codegen/inline/MaxCalcNode.java index 7785d8672e8..abca71e6525 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/inline/MaxCalcNode.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/inline/MaxCalcNode.java @@ -30,8 +30,7 @@ public class MaxCalcNode extends MethodVisitor { private final MethodNode node; - public MaxCalcNode(MethodNode node) - { + public MaxCalcNode(MethodNode node) { super(Opcodes.ASM4, node); this.node = node; int paramsSize = (node.access & Opcodes.ACC_STATIC) == 0 ? 1 : 0; diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/inline/MethodInliner.java b/compiler/backend/src/org/jetbrains/jet/codegen/inline/MethodInliner.java index 2986a8b5f04..4884be9e213 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/inline/MethodInliner.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/inline/MethodInliner.java @@ -28,7 +28,7 @@ public class MethodInliner { private final Parameters parameters; - private final InliningInfo parent; + private final InliningContext parent; @Nullable private final Type lambdaType; @@ -56,7 +56,7 @@ public class MethodInliner { public MethodInliner( @NotNull MethodNode node, @NotNull Parameters parameters, - @NotNull InliningInfo parent, + @NotNull InliningContext parent, @Nullable Type lambdaType, LambdaFieldRemapper lambdaFieldRemapper, boolean isSameModule @@ -109,7 +109,7 @@ public class MethodInliner { final Iterator iterator = constructorInvocations.iterator(); RemappingMethodAdapter remappingMethodAdapter = new RemappingMethodAdapter(resultNode.access, resultNode.desc, resultNode, - new TypeRemapper(currentTypeMapping, isSameModule)); + new TypeRemapper(currentTypeMapping)); InlineAdapter inliner = new InlineAdapter(remappingMethodAdapter, parameters.totalSize()) { diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/inline/Parameters.java b/compiler/backend/src/org/jetbrains/jet/codegen/inline/Parameters.java index 3a33b0d97f2..145e2190253 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/inline/Parameters.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/inline/Parameters.java @@ -24,6 +24,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; +//All parameters with gaps public class Parameters implements Iterable { private final List real; @@ -60,7 +61,7 @@ public class Parameters implements Iterable { return Iterables.concat(real, captured).iterator(); } - public static List addStubs(List capturedParams, int realSize) { + public static List shiftAndAddStubs(List capturedParams, int realSize) { List result = new ArrayList(); for (CapturedParamInfo capturedParamInfo : capturedParams) { CapturedParamInfo newInfo = capturedParamInfo.newIndex(result.size() + realSize); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/inline/ParametersBuilder.java b/compiler/backend/src/org/jetbrains/jet/codegen/inline/ParametersBuilder.java index 8f4e58ef59b..89d40be7106 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/inline/ParametersBuilder.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/inline/ParametersBuilder.java @@ -51,13 +51,6 @@ public class ParametersBuilder { original != null ? original.getIndex() : -1)); } - //public CapturedParamInfo addAdditionalCapturedParam(String fieldName, Type type, boolean skipped, @Nullable ParameterInfo original) { - // CapturedParamInfo capturedParamInfo = - // new CapturedParamInfo(fieldName, type, skipped, original != null ? original.getIndex() : -1, nextCaptured); - // additionalCapturedParams.add(capturedParamInfo); - // return capturedParamInfo; - //} - private void addParameter(ParameterInfo info) { params.add(info); nextIndex += info.getType().getSize(); @@ -82,7 +75,7 @@ public class ParametersBuilder { } public List buildCapturedWithStubs() { - return Parameters.addStubs(buildCaptured(), nextIndex); + return Parameters.shiftAndAddStubs(buildCaptured(), nextIndex); } public Parameters buildParameters() { diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/inline/InlineFieldRemapper.java b/compiler/backend/src/org/jetbrains/jet/codegen/inline/RegeneratedLambdaFieldRemapper.java similarity index 89% rename from compiler/backend/src/org/jetbrains/jet/codegen/inline/InlineFieldRemapper.java rename to compiler/backend/src/org/jetbrains/jet/codegen/inline/RegeneratedLambdaFieldRemapper.java index e1c33a871d6..b6c104f9efb 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/inline/InlineFieldRemapper.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/inline/RegeneratedLambdaFieldRemapper.java @@ -27,7 +27,7 @@ import java.util.Collection; import java.util.List; import java.util.Map; -public class InlineFieldRemapper extends LambdaFieldRemapper { +public class RegeneratedLambdaFieldRemapper extends LambdaFieldRemapper { private final String oldOwnerType; @@ -37,7 +37,12 @@ public class InlineFieldRemapper extends LambdaFieldRemapper { private final Map recapturedLambdas; - public InlineFieldRemapper(String oldOwnerType, String newOwnerType, Parameters parameters, Map recapturedLambdas) { + public RegeneratedLambdaFieldRemapper( + String oldOwnerType, + String newOwnerType, + Parameters parameters, + Map recapturedLambdas + ) { this.oldOwnerType = oldOwnerType; this.newOwnerType = newOwnerType; this.parameters = parameters; @@ -61,6 +66,7 @@ public class InlineFieldRemapper extends LambdaFieldRemapper { String descriptor = Type.getObjectType(newOwnerType).getDescriptor(); + //HACK: it would be reverted again to ALOAD 0 later FieldInsnNode thisStub = new FieldInsnNode(opcode, newOwnerType, "$$$this", descriptor); node.instructions.insertBefore(loadThis, thisStub); @@ -96,15 +102,15 @@ public class InlineFieldRemapper extends LambdaFieldRemapper { return recapturedLambdas.containsKey(owner); } - @Nullable @Override public CapturedParamInfo findField(FieldInsnNode fieldInsnNode, Collection captured) { - if (!isRecapturedLambdaType(fieldInsnNode.owner)) { - return super.findField(fieldInsnNode, captured); - } else { + if (isRecapturedLambdaType(fieldInsnNode.owner)) { LambdaInfo info = recapturedLambdas.get(fieldInsnNode.owner); return super.findField(fieldInsnNode, info.getCapturedVars()); } + else { + return super.findField(fieldInsnNode, captured); + } } } diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/inline/ShiftAdapter.java b/compiler/backend/src/org/jetbrains/jet/codegen/inline/ShiftAdapter.java deleted file mode 100644 index d20d43b7324..00000000000 --- a/compiler/backend/src/org/jetbrains/jet/codegen/inline/ShiftAdapter.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2010-2013 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.jet.codegen.inline; - -import org.jetbrains.asm4.MethodVisitor; -import org.jetbrains.asm4.commons.InstructionAdapter; - -public class ShiftAdapter extends InstructionAdapter { - - private final int shift; - - public ShiftAdapter(MethodVisitor mv, int shift) { - super(mv); - this.shift = shift; - } - - @Override - public void visitIincInsn(int var, int increment) { - super.visitIincInsn(var + shift, increment); - } - - @Override - public void visitVarInsn(int opcode, int var) { - super.visitVarInsn(opcode, var + shift); - } -} diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/inline/TypeRemapper.java b/compiler/backend/src/org/jetbrains/jet/codegen/inline/TypeRemapper.java index f6d62c393d0..726ae0dcb3e 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/inline/TypeRemapper.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/inline/TypeRemapper.java @@ -26,12 +26,9 @@ public class TypeRemapper extends Remapper { @NotNull private final Map typeMapping; - private final boolean isSameModule; - //typeMapping could be changed outside through method processing - public TypeRemapper(@NotNull Map typeMapping, boolean isSameModule) { + public TypeRemapper(@NotNull Map typeMapping) { this.typeMapping = typeMapping; - this.isSameModule = isSameModule; } @Override @@ -41,13 +38,6 @@ public class TypeRemapper extends Remapper { return newType; } - /*if (!isSameModule) { - int indexOfMinus = type.indexOf("-"); - if (indexOfMinus > 0) { - //type.substring(0, indexOfMinus) - } - }*/ - return type; } }