blink/wtf: Really move MovableStrings when DCHECK_IS_ON.

When a MovableString is parked, actually park the content, and poison
the previous allocation. This is intended to find cached raw pointer
accesses, which are not allowed beyond the UI thread task per the
contract of the class.
Enabled only when DCHECK_IS_ON to prevent potential crashes.

Changes with and without DCHECK()s:
- Cache some String properties in MovableStringImpl
- Add a parked_strings_ to MovableStringTable for accounting, and
  update tests accordingly.

Changes with DCHECK()s:
- Add a parked_string_ member to MovableStringImpl
- Copy the string to the parked version in Park(), and poison the
  previous allocation.
- Restore the string in Unpark().

Bug: 837659
Change-Id: Ib7631d5e12471826c9e71a424e30d26cf8f1f042
Reviewed-on: https://chromium-review.googlesource.com/1133169
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Commit-Queue: Benoit L <lizeb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#574529}
3 files changed