During the execution:
- Trace and collect the argument types for the method and the return value type. (some method returns mixed type variable, we should ignore that kind of the method)
- Add the type signature to the method, each type signature refers to the compiled machine code.
- Calculate the execution times of a method and see if it exceeds the threshold.
When compiling a method, the compiler: