Changes between Version 39 and Version 40 of squirrelfish

Apr 3, 2008 10:49:41 AM (14 years ago)



  • squirrelfish

    v39 v40  
    133133Statically detect presence of "with" and/or "catch" in the parser.
    135 For functions that don't use "with" and/or "catch" (and that don't require activation objects), just use the function's scope chain directly, instead of creating a meaningless copy that will never be modified.
    137135Evaluation of a script is supposed to produce a value. This requires storing the value of the last value-producing statement to execute. We need to detect the last top-level value-producing statement in a program, and save its value. Basically, that just means passing an explicit "dst" register to its emitCode function.
    149 Function call should store offset of R, not R, since vector may reallocate. This probably solves most problems related to new evaluations in same global object, since they all occur beneath function calls
    150     -- arguments object also holds a pointer into the register file -- probably needs to be indirect index, instead
    151     -- activation objects also hold pointers into the register file -- ditto
    152     -- lists, if we decide not to make them copy
     147Is it safe for Lists to store a direct pointer to the register file? What if the register file reallocates?
    154149Verify that current function gets marked by virtue of being in the register file
    158153Must mark all scope chains in all active scopes -- can do this by walking up the scopeChain pointers in the register file
    160 List should just be a pointer and a length. This allows us to avoid copying arguments when calling from JS to native code. Most list clients know the size of the list in advance, so they can statically stack-allocate their data, and then vend a pointer and a length. A few clients don't know the size of the list until runtime. They can use a JSCellArray, which is a JSCell that holds a pointer to fixed-sized calloc'd array, which it marks. This might not work exactly as stated once we store types in registers, since the JSValues won't be immediately adjacent anymore.
     155automatic conversion of "this" to global object doesn't work.
    162157Pointers to registers and labels become invalid if the register or label vector resizes.