MCPcopy Index your code
hub / github.com/python/cpython / get_argval_argrepr

Method get_argval_argrepr

Lib/dis.py:578–656  ·  view source on GitHub ↗
(self, op, arg, offset)

Source from the content-addressed store, hash-verified

576 return self.labels_map.get(offset, None)
577
578 def get_argval_argrepr(self, op, arg, offset):
579 get_name = None if self.names is None else self.names.__getitem__
580 argval = None
581 argrepr = ''
582 deop = _deoptop(op)
583 if arg is not None:
584 # Set argval to the dereferenced value of the argument when
585 # available, and argrepr to the string representation of argval.
586 # _disassemble_bytes needs the string repr of the
587 # raw name index for LOAD_GLOBAL, LOAD_CONST, etc.
588 argval = arg
589 if deop in hasconst:
590 argval, argrepr = _get_const_info(deop, arg, self.co_consts)
591 elif deop in hasname:
592 if deop == LOAD_GLOBAL:
593 argval, argrepr = _get_name_info(arg//2, get_name)
594 if (arg & 1) and argrepr:
595 argrepr = f"{argrepr} + NULL"
596 elif deop == LOAD_ATTR:
597 argval, argrepr = _get_name_info(arg//2, get_name)
598 if (arg & 1) and argrepr:
599 argrepr = f"{argrepr} + NULL|self"
600 elif deop == LOAD_SUPER_ATTR:
601 argval, argrepr = _get_name_info(arg//4, get_name)
602 if (arg & 1) and argrepr:
603 argrepr = f"{argrepr} + NULL|self"
604 elif deop == IMPORT_NAME:
605 argval, argrepr = _get_name_info(arg//4, get_name)
606 if (arg & 1) and argrepr:
607 argrepr = f"{argrepr} + lazy"
608 elif (arg & 2) and argrepr:
609 argrepr = f"{argrepr} + eager"
610 else:
611 argval, argrepr = _get_name_info(arg, get_name)
612 elif deop in hasjump or deop in hasexc:
613 argval = self.offset_from_jump_arg(op, arg, offset)
614 lbl = self.get_label_for_offset(argval)
615 assert lbl is not None
616 preposition = "from" if deop == END_ASYNC_FOR else "to"
617 argrepr = f"{preposition} L{lbl}"
618 elif deop in (LOAD_FAST_LOAD_FAST, LOAD_FAST_BORROW_LOAD_FAST_BORROW, STORE_FAST_LOAD_FAST, STORE_FAST_STORE_FAST):
619 arg1 = arg >> 4
620 arg2 = arg & 15
621 val1, argrepr1 = _get_name_info(arg1, self.varname_from_oparg)
622 val2, argrepr2 = _get_name_info(arg2, self.varname_from_oparg)
623 argrepr = argrepr1 + ", " + argrepr2
624 argval = val1, val2
625 elif deop in haslocal or deop in hasfree:
626 argval, argrepr = _get_name_info(arg, self.varname_from_oparg)
627 elif deop in hascompare:
628 argval = cmp_op[arg >> 5]
629 argrepr = argval
630 if arg & 16:
631 argrepr = f"bool({argrepr})"
632 elif deop == CONVERT_VALUE:
633 argval = (None, str, repr, ascii)[arg]
634 argrepr = ('', 'str', 'repr', 'ascii')[arg]
635 elif deop == SET_FUNCTION_ATTRIBUTE:

Callers 2

fMethod · 0.95
_get_instructions_bytesFunction · 0.80

Calls 7

offset_from_jump_argMethod · 0.95
get_label_for_offsetMethod · 0.95
_deoptopFunction · 0.85
_get_const_infoFunction · 0.85
_get_name_infoFunction · 0.85
enumerateFunction · 0.85
joinMethod · 0.45

Tested by 1

fMethod · 0.76