• Alessandro Arzilli's avatar
    runtime: whitelist debugCall32..debugCall65536 in debugCallCheck · d0163302
    Alessandro Arzilli authored
    Whitelists functions debugCall32 through debugCall65536 in
    runtime.debugCallCheck so that any instruction inside those functions
    is considered a safe point.
    This is useful for implementing nested function calls.
    
    For example when evaluating:
    
    	f(g(x))
    
    The debugger should:
    
    1. initiate the call to 'f' until the entry point of 'f',
    2. complete the call to 'g(x)'
    3. copy the return value of 'g(x)' in the arguments of 'f'
    4. complete the call to 'f'
    
    Similarly for:
    
    	f().amethod()
    
    The debugger should initiate the call to '.amethod()', then initiate
    and complete the call to f(), copy the return value to the arguments
    of '.amethod()' and finish its call.
    However in this example, unlike the other example, it may be
    impossible to determine the entry point of '.amethod()' until after
    'f()' is evaluated, which means that the call to 'f()' needs to be
    initiated while stopped inside a debugCall... function.
    
    Change-Id: I575c23542709cedb1a171d63576f7e11069c7674
    Reviewed-on: https://go-review.googlesource.com/c/go/+/161137
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarHeschi Kreinick <heschi@google.com>
    d0163302