-
Notifications
You must be signed in to change notification settings - Fork 380
Closed
Labels
Description
object Test{
def foo = {
println("abc")
synchronized {
wait(100)
}
}
def foobar = synchronized {
wait(100)
}
}
This generates:
define void @"Test$::foo_unit"(i8* %_1) personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
_2.0:
%_3 = call i8* () @"scala.Predef$::load"()
call void (i8*, i8*) @"scala.Predef$::println_java.lang.Object_unit"(i8* %_3, i8* bitcast ({ i8*, i32, i32, i32, i8* }* @"__const::4" to i8*))
%_6 = call i8* () @"scala.scalanative.runtime.package$::load"()
%_7 = call i8* (i8*, i8*) @"scala.scalanative.runtime.package$::getMonitor_java.lang.Object_scala.scalanative.runtime.Monitor"(i8* %_6, i8* %_1)
call void (i8*) @"scala.scalanative.runtime.Monitor::enter_unit"(i8* %_7)
call void (i8*, i64) @"java.lang.Object::wait_i64_unit"(i8* %_1, i64 100)
call void (i8*) @"scala.scalanative.runtime.Monitor::exit_unit"(i8* %_7)
ret void
}
define void @"Test$::foobar_unit"(i8* %_1) personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
_2.0:
call void (i8*, i64) @"java.lang.Object::wait_i64_unit"(i8* %_1, i64 100)
ret void
}
There is no Monitor.enter
and Monitor.exit
around wait in foobar
, like when synchonized
is statement in the method (foo
).