• A
    More Function Calls, parts 2 (#1504) · 60830c2b
    Alessandro Arzilli 提交于
    * proc: support nested function calls
    
    Changes the code in fncall.go to support nested function calls.
    
    This changes delays argument evaluation until after we have used
    the call injection protocol to allocate an argument frame. When
    evaluating the parse tree of an expression we'll initiate each
    function call we find on the way down and then complete the function
    call on the way up.
    
    For example. in:
    
    	f(g(x))
    
    we will:
    
    1. initiate the call injection protocol for f(...)
    2. progress it until the point where we have space for the arguments
       of 'f' (i.e. when we receive the debugCallAXCompleteCall message
       from the target runtime)
    3. inititate the call injection protocol for g(...)
    4. progress it until the point where we have space for the arguments
       of 'g'
    5. copy the value of x into the argument frame of 'g'
    6. finish the call to g(...)
    7. copy the return value of g(x) into the argument frame of 'f'
    8. finish the call to f(...)
    
    Updates #119
    
    * proc: bugfix: closure addr was wrong for non-closure functions
    60830c2b
variables_test.go 62.5 KB