Changes between Version 39 and Version 40 of squirrelfish
- Timestamp:
- Apr 3, 2008 10:49:41 AM (16 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
squirrelfish
v39 v40 133 133 Statically detect presence of "with" and/or "catch" in the parser. 134 134 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 137 135 Evaluation 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. 138 136 … … 147 145 }}} 148 146 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 147 Is it safe for Lists to store a direct pointer to the register file? What if the register file reallocates? 153 148 154 149 Verify that current function gets marked by virtue of being in the register file … … 158 153 Must mark all scope chains in all active scopes -- can do this by walking up the scopeChain pointers in the register file 159 154 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.155 automatic conversion of "this" to global object doesn't work. 161 156 162 157 Pointers to registers and labels become invalid if the register or label vector resizes.