| # `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. |