summaryrefslogtreecommitdiffstats
path: root/js/src/gdb/tests/test-Root.py
blob: e593a972ab711042259ddfee24a161b8797db22a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# Test printing Handles.
# Ignore flake8 errors "undefined name 'assert_pretty'"
# As it caused by the way we instanciate this file
# flake8: noqa: F821

assert_subprinter_registered("SpiderMonkey", "instantiations-of-JS::Rooted")
assert_subprinter_registered("SpiderMonkey", "instantiations-of-JS::Handle")
assert_subprinter_registered("SpiderMonkey", "instantiations-of-JS::MutableHandle")
assert_subprinter_registered("SpiderMonkey", "instantiations-of-js::BarrieredBase")

run_fragment("Root.handle")

assert_pretty("obj", "(JSObject * const)  [object global]")
assert_pretty("mutableObj", "(JSObject *)  [object global]")

run_fragment("Root.HeapSlot")

# This depends on implementation details of arrays, but since HeapSlot is
# not a public type, I'm not sure how to avoid doing *something* ugly.
assert_pretty("((js::NativeObject *) array.ptr)->elements_[0]", '$JS::Value("plinth")')

run_fragment("Root.barriers")

assert_pretty("prebarriered", "(JSObject *)  [object Object]")
assert_pretty("heapptr", "(JSObject *)  [object Object]")
assert_pretty("relocatable", "(JSObject *)  [object Object]")
assert_pretty("val", "$JS::Value((JSObject *)  [object Object])")
assert_pretty("heapValue", "$JS::Value((JSObject *)  [object Object])")
assert_pretty("prebarrieredValue", "$JS::Value((JSObject *)  [object Object])")
assert_pretty("relocatableValue", "$JS::Value((JSObject *)  [object Object])")