Calling context provides important information for a large range of applications, such as event logging, profiling, debugging, anomaly detection, and performance optimization. While some techniques have been proposed to track calling context efficiently, they lack a reliable and precise decoding capability; or they work only under restricted conditions, that is, small programs without objectoriented programming or dynamic component loading. These shortcomings have limited the application of calling context tracking in practice. We propose an encoding technique without those limitations: it provides precise and reliable decoding, supports largesized programs, both procedural and objected-oriented ones, and can cope with dynamic class/library loading. The technique thus enables calling context tracking in a wide variety of scenarios. The evaluation on SPECjvm shows that its efficiency is comparable with that of the state-of-the-art approach while our technique provides precise decoding and demonstrates scalability and flexibility.