diff options
author | Ying Wang <wangying@google.com> | 2012-02-27 18:34:24 -0800 |
---|---|---|
committer | Ying Wang <wangying@google.com> | 2012-02-27 18:34:24 -0800 |
commit | 9f606f95f03a75961498803e24bee6799a7c0885 (patch) | |
tree | a45f4d74feda9b76277a0c9ced55ad15d82248a1 /src/proguard/evaluation/TracedVariables.java | |
parent | cfead78069f3dc32998dc118ee08cab3867acea2 (diff) | |
download | android_external_proguard-jellybean.tar.gz android_external_proguard-jellybean.tar.bz2 android_external_proguard-jellybean.zip |
Revert "Upgrade from Progaurd 4.4 to 4.7."cm-10.1.3-RC2cm-10.1.3-RC1cm-10.1.3cm-10.1.2cm-10.1.1cm-10.1.0-RC5cm-10.1.0-RC4cm-10.1.0-RC3cm-10.1.0-RC2cm-10.1.0-RC1cm-10.1.0cm-10.1-M3cm-10.1-M2cm-10.1-M1mr1.1-stagingjellybean-stablejellybeancm-10.1
This reverts commit cfead78069f3dc32998dc118ee08cab3867acea2.
Bug: 6079915
Diffstat (limited to 'src/proguard/evaluation/TracedVariables.java')
-rw-r--r-- | src/proguard/evaluation/TracedVariables.java | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/src/proguard/evaluation/TracedVariables.java b/src/proguard/evaluation/TracedVariables.java index 5f58f97..1ae6ba6 100644 --- a/src/proguard/evaluation/TracedVariables.java +++ b/src/proguard/evaluation/TracedVariables.java @@ -2,7 +2,7 @@ * ProGuard -- shrinking, optimization, obfuscation, and preverification * of Java bytecode. * - * Copyright (c) 2002-2011 Eric Lafortune (eric@graphics.cornell.edu) + * Copyright (c) 2002-2009 Eric Lafortune (eric@graphics.cornell.edu) * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free @@ -30,6 +30,9 @@ import proguard.evaluation.value.Value; * stores. It then generalizes a given collected Value with the producer Value * of each Value it loads. The producer Value and the initial collected Value * can be set; the generalized collected Value can be retrieved. + * <p> + * In addition, an initialization index can be reset and retrieved, pointing + * to the most recent variable that has been initialized by a store operation. * * @author Eric Lafortune */ @@ -40,6 +43,7 @@ public class TracedVariables extends Variables private Value producerValue; private Variables producerVariables; + private int initializationIndex; /** @@ -74,6 +78,24 @@ public class TracedVariables extends Variables /** + * Resets the initialization index. + */ + public void resetInitialization() + { + initializationIndex = NONE; + } + + + /** + * Returns the most recent initialization index since it has been reset. + */ + public int getInitializationIndex() + { + return initializationIndex; + } + + + /** * Gets the producer Value for the specified variable, without disturbing it. * @param index the variable index. * @return the producer value of the given variable. @@ -142,6 +164,14 @@ public class TracedVariables extends Variables public void store(int index, Value value) { + // Is this store operation an initialization of the variable? + Value previousValue = super.load(index); + if (previousValue == null || + previousValue.computationalType() != value.computationalType()) + { + initializationIndex = index; + } + // Store the value itself in the variable. super.store(index, value); |