|  | # `vm:testing.unsafe.trace-entrypoints-fn` pragma | 
|  |  | 
|  | This pragma is used for testing purposes in the test suite. | 
|  |  | 
|  | Example: | 
|  |  | 
|  | ```dart | 
|  | void hook(String functionName, int entryPointId) { | 
|  | // ... | 
|  | } | 
|  |  | 
|  | class C<T> { | 
|  | @pragma('vm:testing.unsafe.trace-entrypoints-fn', hook) | 
|  | void foo(T x) { | 
|  | // ... | 
|  | } | 
|  | } | 
|  | ``` | 
|  |  | 
|  | When `foo` is invoked, `hook` will be called in `foo`'s prologue if `foo` was | 
|  | compiled with multiple entry points. `hook` will be passed the name of the | 
|  | function it was called for and the ID of the entry point used for the | 
|  | invocation: | 
|  |  | 
|  | - 0: Normal entry. | 
|  |  | 
|  | - 1: Unchecked entry: prologue was short so separate prologues for normal and | 
|  | unchecked entry were compiled. | 
|  |  | 
|  | - 2: Unchecked shared entry: prologue was long, so normal and unchecked entry | 
|  | set a temporary and type-checks are predicated on the temporary. |