MCPcopy Index your code
hub / github.com/RustPython/RustPython / get_argval_argrepr

Method get_argval_argrepr

Lib/dis.py:578–650  ·  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 else:
605 argval, argrepr = _get_name_info(arg, get_name)
606 elif deop in hasjump or deop in hasexc:
607 argval = self.offset_from_jump_arg(op, arg, offset)
608 lbl = self.get_label_for_offset(argval)
609 assert lbl is not None
610 preposition = "from" if deop == END_ASYNC_FOR else "to"
611 argrepr = f"{preposition} L{lbl}"
612 elif deop in (LOAD_FAST_LOAD_FAST, LOAD_FAST_BORROW_LOAD_FAST_BORROW, STORE_FAST_LOAD_FAST, STORE_FAST_STORE_FAST):
613 arg1 = arg >> 4
614 arg2 = arg & 15
615 val1, argrepr1 = _get_name_info(arg1, self.varname_from_oparg)
616 val2, argrepr2 = _get_name_info(arg2, self.varname_from_oparg)
617 argrepr = argrepr1 + ", " + argrepr2
618 argval = val1, val2
619 elif deop in haslocal or deop in hasfree:
620 argval, argrepr = _get_name_info(arg, self.varname_from_oparg)
621 elif deop in hascompare:
622 argval = cmp_op[arg >> 5]
623 argrepr = argval
624 if arg & 16:
625 argrepr = f"bool({argrepr})"
626 elif deop == CONVERT_VALUE:
627 argval = (None, str, repr, ascii)[arg]
628 argrepr = ('', 'str', 'repr', 'ascii')[arg]
629 elif deop == SET_FUNCTION_ATTRIBUTE:
630 argrepr = ', '.join(s for i, s in enumerate(FUNCTION_ATTR_FLAGS)
631 if arg & (1<<i))
632 elif deop == BINARY_OP:
633 _, argrepr = _nb_ops[arg]
634 elif deop == CALL_INTRINSIC_1:
635 argrepr = _intrinsic_1_descs[arg]

Callers 2

fMethod · 0.95
_get_instructions_bytesFunction · 0.80

Calls 9

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
isinstanceFunction · 0.85
reprFunction · 0.85
joinMethod · 0.45

Tested by 1

fMethod · 0.76