<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Aug 26, 2008, at 12:24 AM, Paul Pedriana wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"> <div bgcolor="#ffffff" text="#000000"> Thanks for the info about the smaller RegisterFile size; I'll try reducing it for myself and see how it goes.<br> <br> The RegisterFile.h code has a to-do/fix-me comment for Win32 saying to switch from malloc to VirtualAlloc. FWIW, my vote would be to not make direct calls to OS memory functions within RegisterFile or WebKit in general, at least for non-Unix/Mac builds. Primarily this is because it makes assumptions about what the user wants to do or what the system can do which might not be true. Doing system level memory allocations also prevents the application from measuring memory usage and implementing heap validation. At the least, a user-overridable allocation function can be used and which defaults to using operator new (at least outside Unix variants). This would also have the benefit of allowing the code to work across all platforms out of the box.</div></blockquote><div><br></div><div>WebKit porters are welcome to choose whatever is appropriate for their port, taking into account system assumptions. For users of the public API, I think explicit allocation control would be kind of dodgy.</div><br><blockquote type="cite"><div bgcolor="#ffffff" text="#000000">On Windows, VirtualAlloc isn't likely to buy much because AFAIK VirtualAlloc doesn't have the property whereby it commits pages on demand, though it's possible that a future version of Windows may do it. </div></blockquote><div><br></div><div>It doesn't demand-commit but it does let you separate commit and reserve, which means you could decommit when exiting JS execution for instance.</div><br><blockquote type="cite"><div bgcolor="#ffffff" text="#000000">However, in the meantime if the user can implement these allocations then it's possible for a user to create a page protected heap that works like the Windows process stack and manually commit upon a page fault. With that approach you can also manually extend the mapped memory beyond the original VirtualAlloc size in case the memory requirement becomes huge.</div></blockquote><div><br></div><div>If the memory requirement gets that big there's probably runaway recursion so we're ok with killing the computation.</div><div><br></div><div>&nbsp;- Maciej</div><br><blockquote type="cite"><div bgcolor="#ffffff" text="#000000"><br> <br> Thanks.<br> <br> Paul<br> <br> <br> <br> <blockquote cite="mid:7F465EE8-0EDD-47C2-A43D-AFF03D482494@apple.com" type="cite">  <pre wrap="">The RegisterFile is the amount of memory available on the JS stack,  
reducing it directly reduces the amount of stack, and hence recursion,  
that js code can do.  That said, the RegisterFile allocation should  
result in delayed paging -- eg. it should only be reserving address  
space, and the OS won't actually allocate memory until we attempt to  
use it.  At least if mmap exists and is usable.

--Oliver

On Aug 25, 2008, at 5:25 PM, Cedric Vivier wrote:

  </pre>  <blockquote type="cite">    <pre wrap="">On Tue, Aug 26, 2008 at 12:04 AM, Geoffrey Garen <a class="moz-txt-link-rfc2396E" href="mailto:ggaren@apple.com">&lt;ggaren@apple.com></a>  
wrote:
    </pre>    <blockquote type="cite">      <pre wrap="">If you want the RegisterFile to be 512K, just change its size to  
512K.
You can even deallocate it after JavaScript finishes executing, if
that helps.
      </pre>    </blockquote>    <pre wrap="">I am curious as well as Mark, what are the consequences of decreasing
(or increasing) this value ? [besides the memory usage of course]
_______________________________________________
webkit-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:webkit-dev@lists.webkit.org">webkit-dev@lists.webkit.org</a>
<a class="moz-txt-link-freetext" href="http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev">http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev</a>
    </pre>  </blockquote>  <pre wrap=""><!---->_______________________________________________
webkit-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:webkit-dev@lists.webkit.org">webkit-dev@lists.webkit.org</a>
<a class="moz-txt-link-freetext" href="http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev">http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev</a>

  </pre> </blockquote> <br> </div>  _______________________________________________<br>webkit-dev mailing list<br><a href="mailto:webkit-dev@lists.webkit.org">webkit-dev@lists.webkit.org</a><br>http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev<br></blockquote></div><br></body></html>