Presently the representation of JavaScript values varies depending on the platform, (e.g. on x86-64 we can represent 32-bit integers in JSValue*s, but on x86 we can only represent 31-bit integers). Furthermore we cannot override casting operators to control conversions – which, for example, means that noValue() must be 0 (since the code relies on being able to ask "if (someJSValue) {" meaning "if (someJSValue != noValue()) {", and also means we cannot control casting between pointer types, making it problematic to store pointers in anything but their canonical form. Encapsulating JSValue*s in a smart pointer type will allow us greater flexibility in and control over the internal representation.
Created attachment 26422 [details] The patch Testing on windows before setting review flag.
Created attachment 26443 [details] With added 'doze jsc build fix goodness
Created attachment 26447 [details] revert emitLoad function name change & fix typo in ChangeLog. revert emitLoad name change & fix type in ChangeLog.
Comment on attachment 26447 [details] revert emitLoad function name change & fix typo in ChangeLog. > + value now encapsulaed it will likely make sense to migrate the functionality tyop Looks good, am only rubber stamping the rename portion of it, r=me on the JSValuePtr (and EncodedAsPtr) conversion logic, assuming you've tested jit + interpreter code paths, and perf is good
Created attachment 26480 [details] patch relative to 603, to test on windows [tot was broken earlier.]
Transmitting file data ......................................................................................................................................................................................................................................................................................................... Committed revision 39670.