summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLex Spoon <lex@lexspoon.org>2006-03-27 12:27:41 +0000
committerLex Spoon <lex@lexspoon.org>2006-03-27 12:27:41 +0000
commit5cd5436fc1c6c970911418db50d833c0923f4c26 (patch)
tree50a4fb2ff44fb4af1ddacbd782ba967d4c96cb81 /src
parentb007bacd9aa0c23d5da854d13c1980e6e5cfd04b (diff)
downloadscala-5cd5436fc1c6c970911418db50d833c0923f4c26.tar.gz
scala-5cd5436fc1c6c970911418db50d833c0923f4c26.tar.bz2
scala-5cd5436fc1c6c970911418db50d833c0923f4c26.zip
minor corrections to the consumed and produced ...
minor corrections to the consumed and produced methods of several opcode classes
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/backend/icode/Opcodes.scala15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/icode/Opcodes.scala b/src/compiler/scala/tools/nsc/backend/icode/Opcodes.scala
index 2a1b301598..ccd33807f6 100644
--- a/src/compiler/scala/tools/nsc/backend/icode/Opcodes.scala
+++ b/src/compiler/scala/tools/nsc/backend/icode/Opcodes.scala
@@ -122,7 +122,7 @@ trait Opcodes requires ICodes {
/** Load a field on the stack. The object to which it refers should be
* on the stack.
- * Stack: ...:ref
+ * Stack: ...:ref (assuming isStatic = false)
* ->: ...:value
*/
case class LOAD_FIELD(field: Symbol, isStatic: boolean) extends Instruction {
@@ -130,7 +130,7 @@ trait Opcodes requires ICodes {
override def toString(): String =
"LOAD_FIELD " + (if (isStatic) field.fullNameString else field.toString());
- override def consumed = 1;
+ override def consumed = if(isStatic) 0 else 1;
override def produced = 1;
}
@@ -170,7 +170,7 @@ trait Opcodes requires ICodes {
}
/** Store a value into a field.
- * Stack: ...:ref:value
+ * Stack: ...:ref:value (assuming isStatic=false)
* ->: ...
*/
case class STORE_FIELD(field: Symbol, isStatic: boolean) extends Instruction {
@@ -178,7 +178,7 @@ trait Opcodes requires ICodes {
override def toString(): String =
"STORE_FIELD "+field.toString() + (if (isStatic) " (static)" else " (dynamic)");
- override def consumed = 2;
+ override def consumed = if(isStatic) 1 else 2;
override def produced = 0;
}
@@ -232,7 +232,10 @@ trait Opcodes requires ICodes {
result;
}
- override def produced = 1;
+ override def produced =
+ if(toTypeKind(method.tpe.resultType) == UNIT)
+ 0
+ else 1
}
/** Create a new instance of a class through the specified constructor
@@ -361,7 +364,7 @@ trait Opcodes requires ICodes {
/** Returns a string representation of this instruction */
override def toString(): String ="RETURN (" + kind + ")";
- override def consumed = 0;
+ override def consumed = if(kind == UNIT) 0 else 1;
override def produced = 0;
}