[vm] Don't leave code pages unprotected when a free-list element's header straddles a page boundary.
[vm] Don't leave code pages unprotected when a free-list element's header straddles a page boundary.

The old code breaks in this situation. ^ indicates page boundary:

| <allocated code> | <header> | <remainder> | <other code> |
|       ^               ^                         ^        |

It would have unprotected the start of <other code> without re-protecting it after updating the header.

Fixes https://github.com/dart-lang/sdk/issues/38528

Change-Id: I989becc3ade434fac6ec0eba5b7f8130178f6f68
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122643
Commit-Queue: Samir Jindel <5720a19f3a84f5405fa0776737a4149175e41e6a@google.com>
Reviewed-by: Martin Kustermann <a35dd5b79fac84b2bb3b026a16b8becc55af5961@google.com>

dart-archive/dart-sdk,dartino/dart-sdk,dart-archive/dart-sdk,dartino/dart-sdk,dart-lang/sdk,dart-lang/sdk,dart-archive/dart-sdk,dart-lang/sdk,dartino/dart-sdk,dart-lang/sdk,dart-lang/sdk,dart-lang/sdk,dart-archive/dart-sdk,dart-archive/dart-sdk,dartino/dart-sdk,dartino/dart-sdk,dart-lang/sdk,dartino/dart-sdk,dart-archive/dart-sdk,dartino/dart-sdk,dartino/dart-sdk,dart-archive/dart-sdk,dartino/dart-sdk,dart-lang/sdk,dart-archive/dart-sdk,dart-archive/dart-sdk