Data plane compilation is a transformation from a high-level description of the intended packet processing functionality to the underlying data plane architecture. Compilation in this setting is usually done statically, i.e., the input of the compiler is a fixed description of the forwarding plane semantics and the output is code that can accommodate any packet processing behavior set by the controller at runtime. Below we advocate a dynamic approach to data plane compilation instead, where not just the semantics but the intended behavior is also also input to the compiler. We uncover a handful of runtime optimization opportunities that can be leveraged to improve the performance of custom-compiled datapaths beyond what is possible in a static setting.