Changes between Version 27 and Version 28 of CallingConventionsOverview

Show
Ignore:
Timestamp:
02/02/10 10:44:04 (4 years ago)
Author:
allison
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • CallingConventionsOverview

    v27 v28  
    9494 
    9595 
    96 == Known issues == 
    97  
    98 - ~~The Parrot_call_sub_* and Parrot_call_method_* variants in src/extend.c don't all have the necessary changes to allow them to work with the new calling conventions (these are temporary implementations for backward compatibility before they're removed at the next deprecation point). Parrot_call_sub does have the right changes, and the others can be largely copied from it.~~ 
    99  
    100 - ~~NCI hasn't been fully updated on caller and receiver side to use the new argument passing style.~~ 
    101  
    102 - Return argument processing (Parrot_pcc_fill_returns_from_op and Parrot_pcc_fill_returns_from_c_args) doesn't currently support :named, :slurpy, :flatten, :optional, :opt_flag etc. (t/compilers/imcc/syn/tail.t, t/pmc/coroutine.t) 
    103  
    104 - Parrot_pcc_fill_params_from_op and Parrot_pcc_fill_params_from_c_args are monolithic functions (basically finite state machines iterating over the arguments), that contain a great deal of nearly repeated code (one or two things different each time). Parrot_pcc_fill_returns_from_op and Parrot_pcc_fill_returns_from_c_args will be just as bad once they support all the options. Not a requirement before the merge, but these should be refactored into smaller subroutines. Needs to be thought through carefully though, it was a similar plan that lead to the current mess. 
    105  
    106 - Flattening an argument doesn't alter the signature string stored, so multiple dispatch can't handle the resulting string. Need to modify the signature string while building the CallSignature object. (t/pmc/multisub.t and t/pmc/multidispatch.t) 
    107  
    108 - ~~Edge cases on auto boxing/unboxing argument types, e.g. "Unable to set PMC value, the pointer is not a PMC" (t/oo/methods.t, t/oo/subclass.t, t/pmc/hashiteratorkey.t, t/pmc/object-meths.t, t/pmc/resizablestringarray.t, t/pmc/string.t)~~ 
    109  
    110 - GC attempting to mark a bad variable (t/op/box.t) (Actually IMCC creates bad PackFile_Constants segment for box.t) 
    111  
    112 - Insufficient checking on positional arguments passed inside named arguments (t/op/calling.t) 
    113  
    114 - Insufficient checking on missing named arguments (t/op/cc_state.t) 
    115  
    116 - Insufficient checking on too many arguments passed (t/pmc/exporter.t) 
    117  
    118 - Some tests need to be updated to match the current error messages (t/op/calling.t, t/op/cc_params.t) 
    119  
    120 - ~~Segfault in set_returns, possibly a null call object? (t/op/gc.t, t/pmc/exceptionhandler.t)~~ 
    121  
    122 - Probably a problem with argument handling (t/op/lexicals.t, t/pmc/class.t, t/pmc/codestring.t, t/pmc/object-meths.t, t/pmc/sub.t) 
    123  
    124 - ~~Two NCI edge cases (t/pmc/nci.t)~~ 
    125  
    126 - Likely cases of code still calling into the old functions for invoking from C, instead of the new functions (t/pmc/sub.t, t/pmc/threads.t) 
    127  
    128 - Likely bug in Parrot_call_sub reimplementation (t/src/embed.t) 
    129  
    130 - miniparrot fails to compile if an installed parrot is not already present, because it has -lparrot in the compile options 
    131  
    132 - Make sure the API and documentation consistently uses "args" and "returns" to mean "the things passed into the call or return" and "params" and "results" to mean "the things extracted from the call or return". 
    133  
    134 - ~~Currently, test_more.pir cannot be used on pcc_reapply. Attempting to use test_more.pir results in~~  
    135 {{{ 
    136 FixedIntegerArray: index out of bounds! 
    137 current instr.: 'parrot;Test;Builder;Test;_initialize' pc 44 (runtime/parrot/library/Test/Builder/Test.pir:46) 
    138 called from Sub 'parrot;Test;Builder;_initialize' pc 0 (runtime/parrot/library/Test/Builder.pir:51) 
    139 ... call repeated 1 times 
    140 }}} 
     96 
    14197 
    14298== Argument Processing Algorithms ==