summaryrefslogtreecommitdiff
path: root/buildscripts
diff options
context:
space:
mode:
authorIrina Yatsenko <irina.yatsenko@mongodb.com>2022-07-25 21:13:35 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-07-25 21:48:04 +0000
commit7b19ba19335afe792725c04f9bcc933aabe2c030 (patch)
tree874a34f4fe2ea4b4201e0e1b5e2e1afe5745904b /buildscripts
parent1aa4307b5ecd61413468cb190935f3746ddcf6ef (diff)
downloadmongo-7b19ba19335afe792725c04f9bcc933aabe2c030.tar.gz
SERVER-68264 Update GDB's pretty printer for CodeFragment
Diffstat (limited to 'buildscripts')
-rw-r--r--buildscripts/gdb/mongo_printers.py19
1 files changed, 16 insertions, 3 deletions
diff --git a/buildscripts/gdb/mongo_printers.py b/buildscripts/gdb/mongo_printers.py
index 4c394fbc32f..a0dcc6ad70c 100644
--- a/buildscripts/gdb/mongo_printers.py
+++ b/buildscripts/gdb/mongo_printers.py
@@ -761,6 +761,7 @@ class SbeCodeFragmentPrinter(object):
ptr_size = gdb.lookup_type('void').pointer().sizeof
tag_size = gdb.lookup_type('mongo::sbe::value::TypeTags').sizeof
value_size = gdb.lookup_type('mongo::sbe::value::Value').sizeof
+ uint8_size = gdb.lookup_type('uint8_t').sizeof
uint32_size = gdb.lookup_type('uint32_t').sizeof
builtin_size = gdb.lookup_type('mongo::sbe::vm::Builtin').sizeof
@@ -783,14 +784,14 @@ class SbeCodeFragmentPrinter(object):
# Some instructions have extra arguments, embedded into the ops stream.
args = ''
- if op_name in ['pushLocalVal', 'pushMoveLocalVal', 'pushLocalLambda']:
+ if op_name in ['pushLocalVal', 'pushMoveLocalVal', 'pushLocalLambda', 'traversePConst']:
args = 'arg: ' + str(read_as_integer(cur_op, int_size))
cur_op += int_size
- if op_name in ['jmp', 'jmpTrue', 'jmpNothing']:
+ elif op_name in ['jmp', 'jmpTrue', 'jmpNothing']:
offset = read_as_integer(cur_op, int_size)
cur_op += int_size
args = 'offset: ' + str(offset) + ', target: ' + hex(cur_op + offset)
- elif op_name in ['pushConstVal']:
+ elif op_name in ['pushConstVal', 'getFieldConst']:
tag = read_as_integer(cur_op, tag_size)
args = 'tag: ' + self.valuetags_lookup.get(tag, "unknown") + \
', value: ' + hex(read_as_integer(cur_op + tag_size, value_size))
@@ -814,6 +815,18 @@ class SbeCodeFragmentPrinter(object):
args = 'builtin: ' + self.builtins_lookup.get(builtin_id, "unknown")
args += ' arity: ' + str(read_as_integer(cur_op + builtin_size, arity_size))
cur_op += (builtin_size + arity_size)
+ elif op_name in ['fillEmptyConst']:
+ args = 'Instruction::Constants: ' + str(read_as_integer(cur_op, uint8_size))
+ cur_op += uint8_size
+ elif op_name in ['traverseFConst']:
+ const_enum = read_as_integer(cur_op, uint8_size)
+ cur_op += uint8_size
+ args = \
+ 'Instruction::Constants: ' + str(const_enum) + \
+ ", offset: " + str(read_as_integer(cur_op, int_size))
+ elif op_name in ['applyClassicMatcher']:
+ args = 'MatchExpression* ' + hex(read_as_integer(cur_op, ptr_size))
+ cur_op += ptr_size
yield hex(op_addr), '{} ({})'.format(op_name, args)