Add base::stack, convert std::stack uses use it.

std::stack is a wrapper that defaults to std::deque. As part of our
std::deque removal, an implementation of stack that uses base::circular_deque
is provided.

Rewrites trace_event_argument.cc usage of stack to use indices and a
circular_deque since it was relying on storage stability across updates.

Changes the PPAPI/V8 variable conversion code to avoid unstable usage
of a stack. Fixes a use-after-free in V8VarConverter::ToV8Value where
the reference to the top of the stack was dereferenced after popping it
off.

BUG=757232

Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I4f3ff9b4c4403dafd809f7a6a77902a9cb59e5a0
Reviewed-on: https://chromium-review.googlesource.com/682761
Commit-Queue: Brett Wilson <brettw@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#505705}

CrOS-Libchrome-Original-Commit: 1f07f20e2cf89c72ea4c4948d73f386d7337ece3
15 files changed
tree: 60abc98285b988f3cbf91fa6c625688d807d7339
  1. base/
  2. build/
  3. components/
  4. dbus/
  5. device/
  6. ipc/
  7. mojo/
  8. testing/
  9. third_party/
  10. ui/