I had a look at the print assembly output for ActorCell.invoke. In the no tracer assembly I do see the conditional jump for the hasTracer check, providing I'm reading things correctly. The assembly code for when there is a tracer, for doing trace things, is not included in the no tracer version. Instead, the branch that shouldn't happen has a call, which I assumed is a fallback to the non-compiled version in some way.

What I see for the hasTracer check in ActorCell.invoke assembly looks equivalent to the compiled code I see for something like this:

https://github.com/akka/akka/blob/v2.2.3/akka-actor/src/main/scala/akka/actor/dungeon/Dispatch.scala#L110

Would be great if someone with HotSpot knowledge could check things, and advise on the best approach if it should be different.