Changes between Version 39 and Version 40 of squirrelfish


Ignore:
Timestamp:
Apr 3, 2008 10:49:41 AM (16 years ago)
Author:
ggaren@apple.com
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • squirrelfish

    v39 v40  
    133133Statically detect presence of "with" and/or "catch" in the parser.
    134134
    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.
    136 
    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.
    138136
     
    147145}}}
    148146
    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?
    153148
    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
    159154
    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.
    161156
    162157Pointers to registers and labels become invalid if the register or label vector resizes.