summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/backend/icode/GenICode.scala6
-rw-r--r--src/compiler/scala/tools/nsc/backend/icode/Members.scala1
-rw-r--r--src/compiler/scala/tools/nsc/backend/icode/Opcodes.scala4
3 files changed, 11 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala b/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala
index 5a257571a8..bf7df094ff 100644
--- a/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala
+++ b/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala
@@ -844,6 +844,12 @@ abstract class GenICode extends SubComponent {
ctx1
}
+ case ApplyDynamic(qual, args) =>
+ val ctx1 = genLoad(qual, ctx, ANY_REF_CLASS)
+ genLoadArguments(args, tree.symbol.info.paramTypes, ctx1)
+ ctx1.bb.emit(CALL_METHOD(tree.symbol, InvokeDynamic), tree.pos)
+ ctx1
+
case This(qual) =>
assert(tree.symbol == ctx.clazz.symbol || tree.symbol.isModuleClass,
"Trying to access the this of another class: " +
diff --git a/src/compiler/scala/tools/nsc/backend/icode/Members.scala b/src/compiler/scala/tools/nsc/backend/icode/Members.scala
index a1fd3c7ae5..1048af0861 100644
--- a/src/compiler/scala/tools/nsc/backend/icode/Members.scala
+++ b/src/compiler/scala/tools/nsc/backend/icode/Members.scala
@@ -121,6 +121,7 @@ trait Members { self: ICodes =>
var fields: List[IField] = Nil
var methods: List[IMethod] = Nil
var cunit: CompilationUnit = _
+ var bootstrapClass: Option[String] = None
def addField(f: IField): this.type = {
fields = f :: fields;
diff --git a/src/compiler/scala/tools/nsc/backend/icode/Opcodes.scala b/src/compiler/scala/tools/nsc/backend/icode/Opcodes.scala
index f53be450d9..9b11c588d0 100644
--- a/src/compiler/scala/tools/nsc/backend/icode/Opcodes.scala
+++ b/src/compiler/scala/tools/nsc/backend/icode/Opcodes.scala
@@ -630,8 +630,12 @@ trait Opcodes { self: ICodes =>
}
}
+ /** Virtual calls */
case object Dynamic extends InvokeStyle
+ /** InvokeDynamic a la JSR 292 (experimental). */
+ case object InvokeDynamic extends InvokeStyle
+
/**
* Special invoke. Static(true) is used for calls to private
* members.