There’s a difference between code optimization and JITing (Just-InTime compiling) bytecode. As I understand it, AS3 source code is compiled to bytecode that the AVM (Actionscript Virtual Machine) can interpret. This bytecode is quick to compile and doesn’t contain any platform-specific instructions, and this is why a SWF can run on any platform that has a Flash Player.
When the SWF is run, the bytecode that makes up each function is converted to instructions that run natively on the host platform, meaning that less interpretation is needed the next time around. This JITed bytecode is much faster and more efficient, with the drawback that it only works on the platform and architecture of the host; however, this drawback doesn’t matter at all since the JITed bytecode will never be moved to another computer anyway.
Since the AVM doesn’t JIT constructors, the performance of a constructor call will never improve during the duration of the program’s execution.
I don’t claim to be an expert on the subject, and I’m sure I made a mistake or two, but that should give you a general idea of the process. It’s quite a different concept than the optimization that C/++ uses to clean out dead code at compile time.