<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>85063</bug_id>
          
          <creation_ts>2012-04-27 07:18:02 -0700</creation_ts>
          <short_desc>Add low memory check in ExecutableAllocator::underMemoryPressure()</short_desc>
          <delta_ts>2012-05-09 08:17:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Other</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>LATER</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Lyon Chen">liachen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>msaboff</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>staikos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>611475</commentid>
    <comment_count>0</comment_count>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2012-04-27 07:18:02 -0700</bug_when>
    <thetext>Right now ExecutableAllocator::underMemoryPressure() will always return false, when EXECUTABLE_MEMORY_LIMIT is not defined. Add a call to BlackBerry::Platform::isMemoryLow() to check whether memory is low and return its value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611482</commentid>
    <comment_count>1</comment_count>
      <attachid>139198</attachid>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2012-04-27 07:25:37 -0700</bug_when>
    <thetext>Created attachment 139198
Patch for bug 85063</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611485</commentid>
    <comment_count>2</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-04-27 07:36:21 -0700</bug_when>
    <thetext>+Filip and Michael

An alternative solution is create a ExecutableAllocatorBlackBerry.cpp, and put our underLowMemory() there. In ExecutableAllocator.cpp, we wrap the function with if !PLATFORM(BLACKBERRY). This pattern is widely used in other files like GraphicsContext.cpp IIRC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611493</commentid>
    <comment_count>3</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-04-27 07:57:30 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; +Filip and Michael
&gt; 
&gt; An alternative solution is create a ExecutableAllocatorBlackBerry.cpp, and put our underLowMemory() there. In ExecutableAllocator.cpp, we wrap the function with if !PLATFORM(BLACKBERRY). This pattern is widely used in other files like GraphicsContext.cpp IIRC.

ScrollView also do this.

Or something like:

&lt;agomes&gt; +static bool isOverlimit()
&lt;agomes&gt; +{
&lt;agomes&gt; +#if PLATFORM(BLACKBERRY)
&lt;agomes&gt; +     return BlackBerry::Platform::isMemoryLow();
&lt;agomes&gt; +#endif
&lt;agomes&gt; +
&lt;agomes&gt; +     return false;
&lt;agomes&gt; +}
&lt;agomes&gt; +
&lt;agomes&gt;  bool ExecutableAllocator::underMemoryPressure()
&lt;agomes&gt;  {
&lt;agomes&gt;  #ifdef EXECUTABLE_MEMORY_LIMIT
&lt;agomes&gt;      return DemandExecutableAllocator::bytesAllocatedByAllAllocators() &gt; EXECUTABLE_MEMORY_LIMIT / 2;
&lt;agomes&gt;  #else
&lt;agomes&gt; -    return false;
&lt;agomes&gt; +    return isOverlimit();
&lt;agomes&gt;  #endif
&lt;agomes&gt;  }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611510</commentid>
    <comment_count>4</comment_count>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2012-04-27 08:12:27 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)

Maybe a new cross-platform header file, like WTF/wtf/memorystatus.h, and in this file we define a new function, like isMemoryLow(), but with different implementation for different platforms, and has a default implementation for platforms don&apos;t care.

And in ExecutableAllocator::underMemoryPressure(), call this function to decide whether the memory is under pressure or not.

Will create a patch for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611511</commentid>
    <comment_count>5</comment_count>
      <attachid>139198</attachid>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2012-04-27 08:12:59 -0700</bug_when>
    <thetext>Comment on attachment 139198
Patch for bug 85063

Will create a new patch based on comment 4.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611569</commentid>
    <comment_count>6</comment_count>
      <attachid>139216</attachid>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2012-04-27 09:15:30 -0700</bug_when>
    <thetext>Created attachment 139216
Updated patch for 85063 with new file SystemMemoryStatus.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611624</commentid>
    <comment_count>7</comment_count>
      <attachid>139216</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-04-27 10:13:06 -0700</bug_when>
    <thetext>Comment on attachment 139216
Updated patch for 85063 with new file SystemMemoryStatus.h

View in context: https://bugs.webkit.org/attachment.cgi?id=139216&amp;action=review

Overall it is a much better solution.

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +        [BlackBerry] Add low memory check in ExecutableAllocator::underMemoryPressure() for BlackBerry platform

This line is no longer accurate and should be changed?

&gt; Source/WTF/wtf/SystemMemoryStatus.h:34
&gt; +#define isMemoryLow BlackBerry::Platform::isMemoryLow

If we must use macro, I would use #define isMemoryLow() BlackBerry::Platform::isMemoryLow.

But I would rather use inline function in &quot;namespace WTF&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611626</commentid>
    <comment_count>8</comment_count>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2012-04-27 10:17:45 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; Source/JavaScriptCore/ChangeLog:3
&gt; &gt; +        [BlackBerry] Add low memory check in ExecutableAllocator::underMemoryPressure() for BlackBerry platform
&gt; 
&gt; This line is no longer accurate and should be changed?

This is from the bug, should I change the title of this bug?

&gt; But I would rather use inline function in &quot;namespace WTF&quot;.

OK, will change to use inline for both BlackBerry and non-BlackBerry. And use WTF namespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611640</commentid>
    <comment_count>9</comment_count>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2012-04-27 10:32:09 -0700</bug_when>
    <thetext>Update bug title as now it is more a cross-platform solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611675</commentid>
    <comment_count>10</comment_count>
      <attachid>139229</attachid>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2012-04-27 10:55:40 -0700</bug_when>
    <thetext>Created attachment 139229
Update patch using WTF namespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611697</commentid>
    <comment_count>11</comment_count>
      <attachid>139229</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-04-27 11:12:18 -0700</bug_when>
    <thetext>Comment on attachment 139229
Update patch using WTF namespace.

View in context: https://bugs.webkit.org/attachment.cgi?id=139229&amp;action=review

I&apos;m not sure if we should add this to the underLowMemory() implementation in ExecutableAllocatorFixedVMPool.cpp.

Otherwise the patch looks good to me. I&apos;m not a reviewer though :-P

&gt; Source/WTF/wtf/SystemMemoryStatus.h:33
&gt; +#if PLATFORM(BLACKBERRYBBB)

BLACKBERRYBBB? :) A space after this line would be neat</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611698</commentid>
    <comment_count>12</comment_count>
      <attachid>139236</attachid>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2012-04-27 11:13:09 -0700</bug_when>
    <thetext>Created attachment 139236
Patch fixed typo in 85063.3.patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611706</commentid>
    <comment_count>13</comment_count>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2012-04-27 11:16:35 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; I&apos;m not sure if we should add this to the underLowMemory() implementation in ExecutableAllocatorFixedVMPool.cpp.

Seems we don&apos;t need to check low system memory there, as it is checking against the &quot;reserved&quot; memory, so I guess it is not affected by free system memory anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611782</commentid>
    <comment_count>14</comment_count>
      <attachid>139247</attachid>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2012-04-27 12:34:34 -0700</bug_when>
    <thetext>Created attachment 139247
Fixed error caused by adding WTF namespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612048</commentid>
    <comment_count>15</comment_count>
      <attachid>139247</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-04-27 17:47:15 -0700</bug_when>
    <thetext>Comment on attachment 139247
Fixed error caused by adding WTF namespace.

View in context: https://bugs.webkit.org/attachment.cgi?id=139247&amp;action=review

&gt; Source/WTF/wtf/SystemMemoryStatus.h:45
&gt; +#if PLATFORM(BLACKBERRY)
&gt; +
&gt; +inline bool isSystemMemoryLow() { return BlackBerry::Platform::isMemoryLow(); }
&gt; +
&gt; +#else
&gt; +
&gt; +inline bool isSystemMemoryLow() { return false; }
&gt; +
&gt; +#endif

lets do like this

inline bool isSystemMemoryLow()
{
#if PLATFORM(BLACKBERRY)
    return BlackBerry::Platform::isMemoryLow();
#else
    return false;
#endif
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612621</commentid>
    <comment_count>16</comment_count>
      <attachid>139452</attachid>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2012-04-30 07:37:16 -0700</bug_when>
    <thetext>Created attachment 139452
Patch based on Antonio&apos;s Comment 15</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615481</commentid>
    <comment_count>17</comment_count>
      <attachid>139452</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-05-03 12:10:25 -0700</bug_when>
    <thetext>Comment on attachment 139452
Patch based on Antonio&apos;s Comment 15

View in context: https://bugs.webkit.org/attachment.cgi?id=139452&amp;action=review

&gt; Source/WTF/wtf/SystemMemoryStatus.h:41
&gt; +#if PLATFORM(BLACKBERRY)
&gt; +    return BlackBerry::Platform::isMemoryLow();
&gt; +#else

I feel WTF might be a weird place for this...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615482</commentid>
    <comment_count>18</comment_count>
      <attachid>139452</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-05-03 12:10:25 -0700</bug_when>
    <thetext>Comment on attachment 139452
Patch based on Antonio&apos;s Comment 15

View in context: https://bugs.webkit.org/attachment.cgi?id=139452&amp;action=review

&gt; Source/WTF/wtf/SystemMemoryStatus.h:41
&gt; +#if PLATFORM(BLACKBERRY)
&gt; +    return BlackBerry::Platform::isMemoryLow();
&gt; +#else

I feel WTF might be a weird place for this...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615488</commentid>
    <comment_count>19</comment_count>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2012-05-03 12:17:29 -0700</bug_when>
    <thetext>(In reply to comment #18)

&gt; I feel WTF might be a weird place for this...

But isn&apos;t it a lot of platform specific stuff in WTF already? Or you mean other thing when you said &quot;weird&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615490</commentid>
    <comment_count>20</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-05-03 12:23:38 -0700</bug_when>
    <thetext>&gt; &gt; I feel WTF might be a weird place for this...
&gt; 
&gt; But isn&apos;t it a lot of platform specific stuff in WTF already? Or you mean other thing when you said &quot;weird&quot;?

WebCore already has some support for memory pressure. Adding this transversal isSystemMemoryLow() returning just a bool is rather weird.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615499</commentid>
    <comment_count>21</comment_count>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2012-05-03 12:35:44 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; WebCore already has some support for memory pressure. Adding this transversal isSystemMemoryLow() returning just a bool is rather weird.

Thanks for taking the time to review the patch and answer my question.

Sorry I am not familiar with the low memory handling in WebCore, can they also cause an immediate JavaScriptCore garbage collection?

As for us the problem is when the browser is too busy, the garbage collection might not get a chance to execute. And it seems to us checking low memory in ExecutableAllocator::underMemoryPressure() is a nice place to do that check and force a garbage collection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615514</commentid>
    <comment_count>22</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-05-03 12:58:24 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; &gt; &gt; I feel WTF might be a weird place for this...
&gt; &gt; 
&gt; &gt; But isn&apos;t it a lot of platform specific stuff in WTF already? Or you mean other thing when you said &quot;weird&quot;?
&gt; 
&gt; WebCore already has some support for memory pressure. Adding this transversal isSystemMemoryLow() returning just a bool is rather weird.

There is a layer conflict JSC cannot call WebCore. WebCore can implement a handler for memory pressure, but I think checking memory status should be done in lower layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615571</commentid>
    <comment_count>23</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-05-03 13:44:57 -0700</bug_when>
    <thetext>&gt; As for us the problem is when the browser is too busy, the garbage collection might not get a chance to execute. And it seems to us checking low memory in ExecutableAllocator::underMemoryPressure() is a nice place to do that check and force a garbage collection.

For this sounds like this could simply be cutting corners for one particular case.

For me, ExecutableAllocator::underMemoryPressure()  is not the obvious response to low memory conditions. Dropping giant layers and images should be a first step.

This is why I think the memory pressure should be consistent across the whole WebKit and not implemented differently in each component.

&gt; There is a layer conflict JSC cannot call WebCore. WebCore can implement a handler for memory pressure, but I think checking memory status should be done in lower layer.

JSC does call WebCore all the time, that is called the binding ;)

More seriously, the solution could be to move all memory management to WTF. Or it could be that JSC has a callback to know the memory conditions. I don&apos;t know what it the best solution, but I think adding something transversal to WebCore might not be the best solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615579</commentid>
    <comment_count>24</comment_count>
      <attachid>139452</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-03 13:50:44 -0700</bug_when>
    <thetext>Comment on attachment 139452
Patch based on Antonio&apos;s Comment 15

View in context: https://bugs.webkit.org/attachment.cgi?id=139452&amp;action=review

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        Call WTF::isSystemMemoryLow() to check whether system memory is low in
&gt; +        ExecutableAllocator::underMemoryPressure(). This will force collecting
&gt; +        of garbage, thus avoiding out of system memory while at the same time
&gt; +        we have a lot of unused memory waiting to be released.

I&apos;m not sure I buy this.  ExecutableAllocator has _nothing_ to do with garbage collection.  It only deals with JIT memory.  This method returning true should only cause us to jettison JIT memory; it will not cause any other kinds of memory reclamation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615596</commentid>
    <comment_count>25</comment_count>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2012-05-03 14:03:42 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; I&apos;m not sure I buy this.  ExecutableAllocator has _nothing_ to do with garbage collection.  It only deals with JIT memory.  This method returning true should only cause us to jettison JIT memory; it will not cause any other kinds of memory reclamation.

Thanks for the info and taking the time to review this, Filip &amp; Ben! And sorry for me having not checked this out more carefully.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615656</commentid>
    <comment_count>26</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-05-03 14:48:33 -0700</bug_when>
    <thetext>Even just releasing JIT memory is still, probably not much, helpful.

The memory pressure handler in WebCore is good, but it could be too late in some cases when webkit thread is very busy in executing JS.

We could check the system memory status before allocating a new JS block, and perform a GC if necessary.

Adding a callback is also a solution, better than nothing, from my point of view.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618837</commentid>
    <comment_count>27</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2012-05-08 15:00:21 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 139452 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=139452&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:9
&gt; &gt; +        Call WTF::isSystemMemoryLow() to check whether system memory is low in
&gt; &gt; +        ExecutableAllocator::underMemoryPressure(). This will force collecting
&gt; &gt; +        of garbage, thus avoiding out of system memory while at the same time
&gt; &gt; +        we have a lot of unused memory waiting to be released.
&gt; 
&gt; I&apos;m not sure I buy this.  ExecutableAllocator has _nothing_ to do with garbage collection.  It only deals with JIT memory.  This method returning true should only cause us to jettison JIT memory; it will not cause any other kinds of memory reclamation.

Can&apos;t this be considered useful?  Seems to me it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618840</commentid>
    <comment_count>28</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-08 15:03:10 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #24)
&gt; &gt; (From update of attachment 139452 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=139452&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/ChangeLog:9
&gt; &gt; &gt; +        Call WTF::isSystemMemoryLow() to check whether system memory is low in
&gt; &gt; &gt; +        ExecutableAllocator::underMemoryPressure(). This will force collecting
&gt; &gt; &gt; +        of garbage, thus avoiding out of system memory while at the same time
&gt; &gt; &gt; +        we have a lot of unused memory waiting to be released.
&gt; &gt; 
&gt; &gt; I&apos;m not sure I buy this.  ExecutableAllocator has _nothing_ to do with garbage collection.  It only deals with JIT memory.  This method returning true should only cause us to jettison JIT memory; it will not cause any other kinds of memory reclamation.
&gt; 
&gt; Can&apos;t this be considered useful?  Seems to me it is.

That&apos;s besides the point.  The change log comment is wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618924</commentid>
    <comment_count>29</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2012-05-08 16:22:46 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #27)
&gt; &gt; (In reply to comment #24)
&gt; &gt; &gt; (From update of attachment 139452 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=139452&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/JavaScriptCore/ChangeLog:9
&gt; &gt; &gt; &gt; +        Call WTF::isSystemMemoryLow() to check whether system memory is low in
&gt; &gt; &gt; &gt; +        ExecutableAllocator::underMemoryPressure(). This will force collecting
&gt; &gt; &gt; &gt; +        of garbage, thus avoiding out of system memory while at the same time
&gt; &gt; &gt; &gt; +        we have a lot of unused memory waiting to be released.
&gt; &gt; &gt; 
&gt; &gt; &gt; I&apos;m not sure I buy this.  ExecutableAllocator has _nothing_ to do with garbage collection.  It only deals with JIT memory.  This method returning true should only cause us to jettison JIT memory; it will not cause any other kinds of memory reclamation.
&gt; &gt; 
&gt; &gt; Can&apos;t this be considered useful?  Seems to me it is.
&gt; 
&gt; That&apos;s besides the point.  The change log comment is wrong.

Ok, it wasn&apos;t clear to any of the three of us that this was your point.  

Lyon, you should fix that.

Any other concerns with it Filip?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618958</commentid>
    <comment_count>30</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-08 16:47:01 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (In reply to comment #28)
&gt; &gt; (In reply to comment #27)
&gt; &gt; &gt; (In reply to comment #24)
&gt; &gt; &gt; &gt; (From update of attachment 139452 [details] [details] [details] [details])
&gt; &gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=139452&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Source/JavaScriptCore/ChangeLog:9
&gt; &gt; &gt; &gt; &gt; +        Call WTF::isSystemMemoryLow() to check whether system memory is low in
&gt; &gt; &gt; &gt; &gt; +        ExecutableAllocator::underMemoryPressure(). This will force collecting
&gt; &gt; &gt; &gt; &gt; +        of garbage, thus avoiding out of system memory while at the same time
&gt; &gt; &gt; &gt; &gt; +        we have a lot of unused memory waiting to be released.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I&apos;m not sure I buy this.  ExecutableAllocator has _nothing_ to do with garbage collection.  It only deals with JIT memory.  This method returning true should only cause us to jettison JIT memory; it will not cause any other kinds of memory reclamation.
&gt; &gt; &gt; 
&gt; &gt; &gt; Can&apos;t this be considered useful?  Seems to me it is.
&gt; &gt; 
&gt; &gt; That&apos;s besides the point.  The change log comment is wrong.
&gt; 
&gt; Ok, it wasn&apos;t clear to any of the three of us that this was your point.  
&gt; 
&gt; Lyon, you should fix that.
&gt; 
&gt; Any other concerns with it Filip?

I think that this is an unusual and incomplete policy, particularly since now that we have the LLInt, it is going to be tempting to get rid of underMemoryPressure() altogether.

This policy means that if &quot;system memory is low&quot; [sic], you will force recompilation of all JS code, every time you enter JS execution.

One problem is that you&apos;re created an undocumented, and likely Blackberry-specific, notion of what it means for memory to be low.  The normal meaning of underMemoryPressure() is that you&apos;ve used up half your quota of executable memory, which ought to never happen, since with the LLInt you&apos;re already using hyperbolic heuristics for the JIT that should ensure that the probability of getting to 1/2 is tiny.

Another problem is that you&apos;re conflating overall system memory with JIT memory.  What if you are actually using almost zero JIT memory but what little memory you are using belongs to frequently executed code?  That is a common case, and you&apos;re completely shafting performance for that case. You&apos;re also shafting memory use, since it takes more memory to compile code than it does to keep it around. Note that since we typically run JSC with a fixed pool of JIT memory - which means that we have a fixed quota of how much JIT memory we plan to use - we can ensure that if all executable memory is jettisoned on one entry into JS code, then it is highly unlikely to be jettisoned again the next time, since by definition a jettisoning will bring us back below our quota. But since you&apos;re conflating JIT memory use with memory use in general, it may be that on _every_ entry into JS code you will jettison _all_ JS executable code because the rest of the system thinks it&apos;s under pressure, and then you&apos;ll use possibly more memory than what you freed since compilation is expensive.

Finally on many platforms there is unlikely to be a nice and tidy notion of system memory being low.  Mobile/embedded platforms might have this notions, but desktops don&apos;t - you&apos;ve always got more virtual memory, and the effect of using more of it is steady degradation of performance through the steady increase in paging. So there is no discrete low memory state.

On the other hand, I can appreciate the need for these tweaks in shipping software, and if the Blackberry port finds it useful, then having it in the tree, with appropriate guards for Blackberry, is probably great for everyone. In that case I would remove the SystemMemoryStatus.h header and place all the code inside underMemoryPressure(). Then it becomes clear what you&apos;re doing: you&apos;re instituting a Blackberry-specific policy that links whatever it is that BlackBerry::Platform::isMemoryLow() does to JSC&apos;s notion of underMemoryPressure().

This is particularly useful if in the future we decide to remove underMemoryPressure() and introduce some more rational reasoning about how much JIT memory ought to be used at any time - for example using a least-recently-used jettisoning of executable code. If that were to happen, having the code in one place and not abstracted behind an underspecified WTF API will help us reason about how to change the code in a way that does not completely break Blackberry&apos;s heuristics.

In short, I appreciate the need for this patch but would recommend (1) getting rid of SystemMemoryStatus.h and simply having the code inline in underMemoryPressure() and (2) adding some comments about what you actually want the heuristics to be. That minimizes the risk of the code succumbing to bit rot, and it also ensures that other ports don&apos;t attempt to do similar things but without the benefit of the Blackberry-specific memory pressure APIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619500</commentid>
    <comment_count>31</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-05-09 08:17:42 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; (In reply to comment #29)
&gt; &gt; (In reply to comment #28)
&gt; &gt; &gt; (In reply to comment #27)
&gt; &gt; &gt; &gt; (In reply to comment #24)
&gt; &gt; &gt; &gt; &gt; (From update of attachment 139452 [details] [details] [details] [details] [details])
&gt; &gt; &gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=139452&amp;action=review
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; Source/JavaScriptCore/ChangeLog:9
&gt; &gt; &gt; &gt; &gt; &gt; +        Call WTF::isSystemMemoryLow() to check whether system memory is low in
&gt; &gt; &gt; &gt; &gt; &gt; +        ExecutableAllocator::underMemoryPressure(). This will force collecting
&gt; &gt; &gt; &gt; &gt; &gt; +        of garbage, thus avoiding out of system memory while at the same time
&gt; &gt; &gt; &gt; &gt; &gt; +        we have a lot of unused memory waiting to be released.
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; I&apos;m not sure I buy this.  ExecutableAllocator has _nothing_ to do with garbage collection.  It only deals with JIT memory.  This method returning true should only cause us to jettison JIT memory; it will not cause any other kinds of memory reclamation.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Can&apos;t this be considered useful?  Seems to me it is.
&gt; &gt; &gt; 
&gt; &gt; &gt; That&apos;s besides the point.  The change log comment is wrong.
&gt; &gt; 
&gt; &gt; Ok, it wasn&apos;t clear to any of the three of us that this was your point.  
&gt; &gt; 
&gt; &gt; Lyon, you should fix that.
&gt; &gt; 
&gt; &gt; Any other concerns with it Filip?
&gt; 
&gt; I think that this is an unusual and incomplete policy, particularly since now that we have the LLInt, it is going to be tempting to get rid of underMemoryPressure() altogether.
&gt; 
&gt; This policy means that if &quot;system memory is low&quot; [sic], you will force recompilation of all JS code, every time you enter JS execution.
&gt; 
&gt; One problem is that you&apos;re created an undocumented, and likely Blackberry-specific, notion of what it means for memory to be low.  The normal meaning of underMemoryPressure() is that you&apos;ve used up half your quota of executable memory, which ought to never happen, since with the LLInt you&apos;re already using hyperbolic heuristics for the JIT that should ensure that the probability of getting to 1/2 is tiny.
&gt; 
&gt; Another problem is that you&apos;re conflating overall system memory with JIT memory.  What if you are actually using almost zero JIT memory but what little memory you are using belongs to frequently executed code?  That is a common case, and you&apos;re completely shafting performance for that case. You&apos;re also shafting memory use, since it takes more memory to compile code than it does to keep it around. Note that since we typically run JSC with a fixed pool of JIT memory - which means that we have a fixed quota of how much JIT memory we plan to use - we can ensure that if all executable memory is jettisoned on one entry into JS code, then it is highly unlikely to be jettisoned again the next time, since by definition a jettisoning will bring us back below our quota. But since you&apos;re conflating JIT memory use with memory use in general, it may be that on _every_ entry into JS code you will jettison _all_ JS executable code because the rest of the system thinks it&apos;s under pressure, and then you&apos;ll use possibly more memory than what you freed since compilation is expensive.
&gt; 
&gt; Finally on many platforms there is unlikely to be a nice and tidy notion of system memory being low.  Mobile/embedded platforms might have this notions, but desktops don&apos;t - you&apos;ve always got more virtual memory, and the effect of using more of it is steady degradation of performance through the steady increase in paging. So there is no discrete low memory state.
&gt; 
&gt; On the other hand, I can appreciate the need for these tweaks in shipping software, and if the Blackberry port finds it useful, then having it in the tree, with appropriate guards for Blackberry, is probably great for everyone. In that case I would remove the SystemMemoryStatus.h header and place all the code inside underMemoryPressure(). Then it becomes clear what you&apos;re doing: you&apos;re instituting a Blackberry-specific policy that links whatever it is that BlackBerry::Platform::isMemoryLow() does to JSC&apos;s notion of underMemoryPressure().
&gt; 
&gt; This is particularly useful if in the future we decide to remove underMemoryPressure() and introduce some more rational reasoning about how much JIT memory ought to be used at any time - for example using a least-recently-used jettisoning of executable code. If that were to happen, having the code in one place and not abstracted behind an underspecified WTF API will help us reason about how to change the code in a way that does not completely break Blackberry&apos;s heuristics.
&gt; 
&gt; In short, I appreciate the need for this patch but would recommend (1) getting rid of SystemMemoryStatus.h and simply having the code inline in underMemoryPressure() and (2) adding some comments about what you actually want the heuristics to be. That minimizes the risk of the code succumbing to bit rot, and it also ensures that other ports don&apos;t attempt to do similar things but without the benefit of the Blackberry-specific memory pressure APIs.

Thanks a lot! I think we should re-evaluate this task based on your comments.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139198</attachid>
            <date>2012-04-27 07:25:37 -0700</date>
            <delta_ts>2012-04-27 08:12:59 -0700</delta_ts>
            <desc>Patch for bug 85063</desc>
            <filename>85063.patch</filename>
            <type>text/plain</type>
            <size>1912</size>
            <attacher name="Lyon Chen">liachen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDZlYzMyMDMuLjIxYmU1ZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA0LTI3ICBMaWFuZ2h1aSBDaGVu
ICA8bGlhY2hlbkByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBBZGQgbG93IG1lbW9y
eSBjaGVjayBpbiBFeGVjdXRhYmxlQWxsb2NhdG9yOjp1bmRlck1lbW9yeVByZXNzdXJlKCkgZm9y
IEJsYWNrQmVycnkgcGxhdGZvcm0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg1MDYzCisKKyAgICAgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyBjaGFuZ2Ug
aXMgdG8gbGV0IEphdmFTY3JpcHRDb3JlIGtub3cgb3V0IG9mIG1lbW9yeQorICAgICAgICBzaXR1
YXRpb24gYXNhcCwgc28gaXQgY2FuIGJlZ2luIGNvbGxlY3QgZ2FyYmFnZSBzb29uZXIsIHRodXMg
YXZvaWRpbmcKKyAgICAgICAgdGhlIHNpdHVhdGlvbiB0aGF0IHN5c3RlbSBpcyBvdXQgb2YgbWVt
b3J5IHdoaWxlIHRoZXJlIGlzIGEgbG90IG9mCisgICAgICAgIHVudXNlZCBtZW1vcnkgd2FpdGlu
ZyB0byBiZSByZWxlYXNlZCBidXQgY2FuJ3QgYmVjYXVzZSBzeXN0ZW0gaXMgYnVzeS4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGppdC9FeGVjdXRh
YmxlQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6dW5k
ZXJNZW1vcnlQcmVzc3VyZSk6CisKIDIwMTItMDQtMjYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBERkcgQVJNdjcgYmFja2VuZCBzaG91bGQgb3B0aW1pemUgRmxv
YXQzMiBhcnJheXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0
YWJsZUFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVB
bGxvY2F0b3IuY3BwCmluZGV4IGUzMGM4OTIuLmI0NDNhMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcApAQCAtMjgsNiArMjgsMTEg
QEAKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAKICNpZiBFTkFCTEUoRVhFQ1VU
QUJMRV9BTExPQ0FUT1JfREVNQU5EKQorCisjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKKyNpbmNs
dWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1NZW1vcnkuaD4KKyNlbmRpZgorCiAjaW5jbHVkZSAiQ29k
ZVByb2ZpbGluZy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01l
dGFBbGxvY2F0b3IuaD4KQEAgLTE5MCw4ICsxOTUsMTQgQEAgYm9vbCBFeGVjdXRhYmxlQWxsb2Nh
dG9yOjp1bmRlck1lbW9yeVByZXNzdXJlKCkKICNpZmRlZiBFWEVDVVRBQkxFX01FTU9SWV9MSU1J
VAogICAgIHJldHVybiBEZW1hbmRFeGVjdXRhYmxlQWxsb2NhdG9yOjpieXRlc0FsbG9jYXRlZEJ5
QWxsQWxsb2NhdG9ycygpID4gRVhFQ1VUQUJMRV9NRU1PUllfTElNSVQgLyAyOwogI2Vsc2UKKwor
I2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCisgICAgcmV0dXJuIEJsYWNrQmVycnk6OlBsYXRmb3Jt
Ojppc01lbW9yeUxvdygpOworI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKKworI2Vu
ZGlmCiB9CiAKIGRvdWJsZSBFeGVjdXRhYmxlQWxsb2NhdG9yOjptZW1vcnlQcmVzc3VyZU11bHRp
cGxpZXIoc2l6ZV90IGFkZGVkTWVtb3J5VXNhZ2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139216</attachid>
            <date>2012-04-27 09:15:30 -0700</date>
            <delta_ts>2012-04-27 10:55:40 -0700</delta_ts>
            <desc>Updated patch for 85063 with new file SystemMemoryStatus.h</desc>
            <filename>85063.2.patch</filename>
            <type>text/plain</type>
            <size>4559</size>
            <attacher name="Lyon Chen">liachen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDZlYzMyMDMuLjkyNjhhMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA0LTI3ICBMaWFuZ2h1aSBDaGVu
ICA8bGlhY2hlbkByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBBZGQgbG93IG1lbW9y
eSBjaGVjayBpbiBFeGVjdXRhYmxlQWxsb2NhdG9yOjp1bmRlck1lbW9yeVByZXNzdXJlKCkgZm9y
IEJsYWNrQmVycnkgcGxhdGZvcm0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg1MDYzCisKKyAgICAgICAgQ2FsbCBpc01lbW9yeUxvdygpIGluIEV4ZWN1
dGFibGVBbGxvY2F0b3I6OnVuZGVyTWVtb3J5UHJlc3N1cmUoKQorICAgICAgICB0byBjaGVjayB3
aGV0aGVyIHN5c3RlbSBmcmVlIG1lbW9yeSBpcyB0b28gbG93LgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxvY2F0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9yOjp1bmRlck1lbW9yeVByZXNz
dXJlKToKKwogMjAxMi0wNC0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAg
ICAgICAgIERGRyBBUk12NyBiYWNrZW5kIHNob3VsZCBvcHRpbWl6ZSBGbG9hdDMyIGFycmF5cwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAK
aW5kZXggZTMwYzg5Mi4uNWM4OWI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi
RXhlY3V0YWJsZUFsbG9jYXRvci5oIgogCiAjaWYgRU5BQkxFKEVYRUNVVEFCTEVfQUxMT0NBVE9S
X0RFTUFORCkKKwogI2luY2x1ZGUgIkNvZGVQcm9maWxpbmcuaCIKICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NZXRhQWxsb2NhdG9yLmg+CkBAIC0zNSw2ICszNiw3IEBA
CiAjaWYgRU5BQkxFKEFTU0VNQkxFUl9XWF9FWENMVVNJVkUpCiAjaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KICNlbmRpZgorI2luY2x1ZGUgPHd0Zi9TeXN0ZW1NZW1vcnlTdGF0dXMuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogI2luY2x1ZGUgPHd0Zi9WTVRhZ3Mu
aD4KICNlbmRpZgpAQCAtMTg4LDkgKzE5MCw5IEBAIGJvb2wgRXhlY3V0YWJsZUFsbG9jYXRvcjo6
aXNWYWxpZCgpIGNvbnN0CiBib29sIEV4ZWN1dGFibGVBbGxvY2F0b3I6OnVuZGVyTWVtb3J5UHJl
c3N1cmUoKQogewogI2lmZGVmIEVYRUNVVEFCTEVfTUVNT1JZX0xJTUlUCi0gICAgcmV0dXJuIERl
bWFuZEV4ZWN1dGFibGVBbGxvY2F0b3I6OmJ5dGVzQWxsb2NhdGVkQnlBbGxBbGxvY2F0b3JzKCkg
PiBFWEVDVVRBQkxFX01FTU9SWV9MSU1JVCAvIDI7CisgICAgcmV0dXJuIGlzTWVtb3J5TG93KCkg
fHwgRGVtYW5kRXhlY3V0YWJsZUFsbG9jYXRvcjo6Ynl0ZXNBbGxvY2F0ZWRCeUFsbEFsbG9jYXRv
cnMoKSA+IEVYRUNVVEFCTEVfTUVNT1JZX0xJTUlUIC8gMjsKICNlbHNlCi0gICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiBpc01lbW9yeUxvdygpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNjRhOWZi
ZS4uZGQ2OWE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNC0yNyAgTGlhbmdodWkgQ2hl
biAgPGxpYWNoZW5AcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gQWRkIGxvdyBtZW1v
cnkgY2hlY2sgaW4gRXhlY3V0YWJsZUFsbG9jYXRvcjo6dW5kZXJNZW1vcnlQcmVzc3VyZSgpIGZv
ciBCbGFja0JlcnJ5IHBsYXRmb3JtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04NTA2MworCisgICAgICAgIEFkZCBhIG5ldyBTeXN0ZW1NZW1vcnlTdGF0
dXMuaCBmaWxlLCBkZWNsYXJlIG9yIGRlZmluZSBmdW5jdGlvbgorICAgICAgICBpc01lbW9yeUxv
dygpIHRoZXJlIHNvIGRpZmZlcmVudCBwbGF0Zm9ybXMgY2FuIGNob29zZSBkaWZmZXJlbnQKKyAg
ICAgICAgaW1wbGVtZW50YXRpb24gZm9yIGl0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1N5c3RlbU1lbW9yeVN0YXR1cy5oOiBBZGRlZC4K
KyAgICAgICAgKGlzTWVtb3J5TG93KToKKwogMjAxMi0wNC0yNiAgQW50b25pbyBHb21lcyAgPGFn
b21lc0ByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBwcm9wZXJseSBkaXNhYmxlIERS
QUdfU1VQUE9SVApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3lzdGVtTWVtb3J5U3RhdHVz
LmggYi9Tb3VyY2UvV1RGL3d0Zi9TeXN0ZW1NZW1vcnlTdGF0dXMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5jYjI0NGQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dU
Ri93dGYvU3lzdGVtTWVtb3J5U3RhdHVzLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdURl9TeXN0ZW1NZW1vcnlTdGF0dXNfaAorI2RlZmluZSBX
VEZfU3lzdGVtTWVtb3J5U3RhdHVzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisj
aWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1NZW1v
cnkuaD4KKworI2RlZmluZSBpc01lbW9yeUxvdyBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6aXNNZW1v
cnlMb3cKKworI2Vsc2UKKworaW5saW5lIGJvb2wgaXNNZW1vcnlMb3coKSB7IHJldHVybiBmYWxz
ZTsgfQorCisjZW5kaWYKKworI2VuZGlmIC8qIFdURl9TeXN0ZW1NZW1vcnlTdGF0dXNfaCAqLwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139229</attachid>
            <date>2012-04-27 10:55:40 -0700</date>
            <delta_ts>2012-04-27 11:13:09 -0700</delta_ts>
            <desc>Update patch using WTF namespace.</desc>
            <filename>85063.3.patch</filename>
            <type>text/plain</type>
            <size>4390</size>
            <attacher name="Lyon Chen">liachen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGYwNzQwYTcuLmJiYmZlMDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA0LTI3ICBMaWFuZ2h1aSBDaGVu
ICA8bGlhY2hlbkByaW0uY29tPgorCisgICAgICAgIEFkZCBsb3cgbWVtb3J5IGNoZWNrIGluIEV4
ZWN1dGFibGVBbGxvY2F0b3I6OnVuZGVyTWVtb3J5UHJlc3N1cmUoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUwNjMKKworICAgICAgICBDYWxsIFdU
Rjo6aXNNZW1vcnlMb3coKSB0byBjaGVjayB3aGV0aGVyIHN5c3RlbSBtZW1vcnkgaXMgbG93IGlu
CisgICAgICAgIEV4ZWN1dGFibGVBbGxvY2F0b3I6OnVuZGVyTWVtb3J5UHJlc3N1cmUoKS4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGppdC9FeGVj
dXRhYmxlQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6
dW5kZXJNZW1vcnlQcmVzc3VyZSk6CisKIDIwMTItMDQtMjcgIEdhdmluIFBldGVycyAgPGdhdmlu
cEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIG5ldyBFTkFCTEVfTElOS19QUkVSRU5ERVIg
ZGVmaW5lIHRvIGNvbnRyb2wgdGhlIFByZXJlbmRlcmluZyBBUEkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCmluZGV4IGUzMGM4OTIuLjg4
ZTZkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFs
bG9jYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxs
b2NhdG9yLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2lmIEVOQUJMRShBU1NFTUJMRVJfV1hfRVhD
TFVTSVZFKQogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjZW5kaWYKKyNpbmNsdWRlIDx3
dGYvU3lzdGVtTWVtb3J5U3RhdHVzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2
ZXMuaD4KICNpbmNsdWRlIDx3dGYvVk1UYWdzLmg+CiAjZW5kaWYKQEAgLTE4OCw5ICsxODksOSBA
QCBib29sIEV4ZWN1dGFibGVBbGxvY2F0b3I6OmlzVmFsaWQoKSBjb25zdAogYm9vbCBFeGVjdXRh
YmxlQWxsb2NhdG9yOjp1bmRlck1lbW9yeVByZXNzdXJlKCkKIHsKICNpZmRlZiBFWEVDVVRBQkxF
X01FTU9SWV9MSU1JVAotICAgIHJldHVybiBEZW1hbmRFeGVjdXRhYmxlQWxsb2NhdG9yOjpieXRl
c0FsbG9jYXRlZEJ5QWxsQWxsb2NhdG9ycygpID4gRVhFQ1VUQUJMRV9NRU1PUllfTElNSVQgLyAy
OworICAgIHJldHVybiBpc01lbW9yeUxvdygpIHx8IERlbWFuZEV4ZWN1dGFibGVBbGxvY2F0b3I6
OmJ5dGVzQWxsb2NhdGVkQnlBbGxBbGxvY2F0b3JzKCkgPiBFWEVDVVRBQkxFX01FTU9SWV9MSU1J
VCAvIDI7CiAjZWxzZQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaXNNZW1vcnlMb3co
KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGYwZjM0NWMuLjNhZWNhYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTItMDQtMjcgIExpYW5naHVpIENoZW4gIDxsaWFjaGVuQHJpbS5jb20+CisKKyAgICAg
ICAgQWRkIGxvdyBtZW1vcnkgY2hlY2sgaW4gRXhlY3V0YWJsZUFsbG9jYXRvcjo6dW5kZXJNZW1v
cnlQcmVzc3VyZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NTA2MworCisgICAgICAgIEFkZCBTeXN0ZW1NZW1vcnlTdGF0dXMuaCBmaWxlIHRvIGFk
ZCBwbGF0Zm9ybSBzcGVjaWZpYyBtZW1vcnkgc3RhdHVzCisgICAgICAgIGZ1bmN0aW9ucy4gUmln
aHQgbm93IGl0IGlzIG9ubHkgaXNNZW1vcnlMb3coKS4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9TeXN0ZW1NZW1vcnlTdGF0dXMuaDogQWRk
ZWQuCisgICAgICAgIChXVEYpOgorICAgICAgICAoV1RGOjppc01lbW9yeUxvdyk6CisKIDIwMTIt
MDQtMjYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtTT1VQXSBBZGQgYSB3YXkgdG8gcmVnaXN0ZXIgY3VzdG9tIHVyaSBzY2hlbWVzIGluIFdl
YktpdDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N5c3RlbU1lbW9yeVN0YXR1cy5oIGIv
U291cmNlL1dURi93dGYvU3lzdGVtTWVtb3J5U3RhdHVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMzExOTI2MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1N5c3RlbU1lbW9yeVN0YXR1cy5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXVEZfU3lzdGVtTWVtb3J5U3RhdHVzX2gKKyNkZWZpbmUgV1RGX1N5
c3RlbU1lbW9yeVN0YXR1c19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworbmFtZXNw
YWNlIFdURiB7CisKKyNpZiBQTEFURk9STShCTEFDS0JFUlJZQkJCKQorI2luY2x1ZGUgPEJsYWNr
QmVycnlQbGF0Zm9ybU1lbW9yeS5oPgorCitpbmxpbmUgYm9vbCBpc01lbW9yeUxvdygpIHsgcmV0
dXJuIEJsYWNrQmVycnk6OlBsYXRmb3JtOjppc01lbW9yeUxvdygpOyB9CisKKyNlbHNlCisKK2lu
bGluZSBib29sIGlzTWVtb3J5TG93KCkgeyByZXR1cm4gZmFsc2U7IH0KKworI2VuZGlmCisKK30g
Ly8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLyogV1RGX1N5c3RlbU1lbW9yeVN0YXR1c19oICov
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139236</attachid>
            <date>2012-04-27 11:13:09 -0700</date>
            <delta_ts>2012-04-27 12:35:12 -0700</delta_ts>
            <desc>Patch fixed typo in 85063.3.patch</desc>
            <filename>85063.4.patch</filename>
            <type>text/plain</type>
            <size>4387</size>
            <attacher name="Lyon Chen">liachen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGYwNzQwYTcuLmJiYmZlMDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA0LTI3ICBMaWFuZ2h1aSBDaGVu
ICA8bGlhY2hlbkByaW0uY29tPgorCisgICAgICAgIEFkZCBsb3cgbWVtb3J5IGNoZWNrIGluIEV4
ZWN1dGFibGVBbGxvY2F0b3I6OnVuZGVyTWVtb3J5UHJlc3N1cmUoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUwNjMKKworICAgICAgICBDYWxsIFdU
Rjo6aXNNZW1vcnlMb3coKSB0byBjaGVjayB3aGV0aGVyIHN5c3RlbSBtZW1vcnkgaXMgbG93IGlu
CisgICAgICAgIEV4ZWN1dGFibGVBbGxvY2F0b3I6OnVuZGVyTWVtb3J5UHJlc3N1cmUoKS4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGppdC9FeGVj
dXRhYmxlQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6
dW5kZXJNZW1vcnlQcmVzc3VyZSk6CisKIDIwMTItMDQtMjcgIEdhdmluIFBldGVycyAgPGdhdmlu
cEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIG5ldyBFTkFCTEVfTElOS19QUkVSRU5ERVIg
ZGVmaW5lIHRvIGNvbnRyb2wgdGhlIFByZXJlbmRlcmluZyBBUEkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCmluZGV4IGUzMGM4OTIuLjg4
ZTZkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFs
bG9jYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxs
b2NhdG9yLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2lmIEVOQUJMRShBU1NFTUJMRVJfV1hfRVhD
TFVTSVZFKQogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjZW5kaWYKKyNpbmNsdWRlIDx3
dGYvU3lzdGVtTWVtb3J5U3RhdHVzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2
ZXMuaD4KICNpbmNsdWRlIDx3dGYvVk1UYWdzLmg+CiAjZW5kaWYKQEAgLTE4OCw5ICsxODksOSBA
QCBib29sIEV4ZWN1dGFibGVBbGxvY2F0b3I6OmlzVmFsaWQoKSBjb25zdAogYm9vbCBFeGVjdXRh
YmxlQWxsb2NhdG9yOjp1bmRlck1lbW9yeVByZXNzdXJlKCkKIHsKICNpZmRlZiBFWEVDVVRBQkxF
X01FTU9SWV9MSU1JVAotICAgIHJldHVybiBEZW1hbmRFeGVjdXRhYmxlQWxsb2NhdG9yOjpieXRl
c0FsbG9jYXRlZEJ5QWxsQWxsb2NhdG9ycygpID4gRVhFQ1VUQUJMRV9NRU1PUllfTElNSVQgLyAy
OworICAgIHJldHVybiBpc01lbW9yeUxvdygpIHx8IERlbWFuZEV4ZWN1dGFibGVBbGxvY2F0b3I6
OmJ5dGVzQWxsb2NhdGVkQnlBbGxBbGxvY2F0b3JzKCkgPiBFWEVDVVRBQkxFX01FTU9SWV9MSU1J
VCAvIDI7CiAjZWxzZQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaXNNZW1vcnlMb3co
KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGYwZjM0NWMuLjNhZWNhYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTItMDQtMjcgIExpYW5naHVpIENoZW4gIDxsaWFjaGVuQHJpbS5jb20+CisKKyAgICAg
ICAgQWRkIGxvdyBtZW1vcnkgY2hlY2sgaW4gRXhlY3V0YWJsZUFsbG9jYXRvcjo6dW5kZXJNZW1v
cnlQcmVzc3VyZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NTA2MworCisgICAgICAgIEFkZCBTeXN0ZW1NZW1vcnlTdGF0dXMuaCBmaWxlIHRvIGFk
ZCBwbGF0Zm9ybSBzcGVjaWZpYyBtZW1vcnkgc3RhdHVzCisgICAgICAgIGZ1bmN0aW9ucy4gUmln
aHQgbm93IGl0IGlzIG9ubHkgaXNNZW1vcnlMb3coKS4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9TeXN0ZW1NZW1vcnlTdGF0dXMuaDogQWRk
ZWQuCisgICAgICAgIChXVEYpOgorICAgICAgICAoV1RGOjppc01lbW9yeUxvdyk6CisKIDIwMTIt
MDQtMjYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtTT1VQXSBBZGQgYSB3YXkgdG8gcmVnaXN0ZXIgY3VzdG9tIHVyaSBzY2hlbWVzIGluIFdl
YktpdDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N5c3RlbU1lbW9yeVN0YXR1cy5oIGIv
U291cmNlL1dURi93dGYvU3lzdGVtTWVtb3J5U3RhdHVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMzExOTI2MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1N5c3RlbU1lbW9yeVN0YXR1cy5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXVEZfU3lzdGVtTWVtb3J5U3RhdHVzX2gKKyNkZWZpbmUgV1RGX1N5
c3RlbU1lbW9yeVN0YXR1c19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworbmFtZXNw
YWNlIFdURiB7CisKKyNpZiBQTEFURk9STShCTEFDS0JFUlJZKQorI2luY2x1ZGUgPEJsYWNrQmVy
cnlQbGF0Zm9ybU1lbW9yeS5oPgorCitpbmxpbmUgYm9vbCBpc01lbW9yeUxvdygpIHsgcmV0dXJu
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjppc01lbW9yeUxvdygpOyB9CisKKyNlbHNlCisKK2lubGlu
ZSBib29sIGlzTWVtb3J5TG93KCkgeyByZXR1cm4gZmFsc2U7IH0KKworI2VuZGlmCisKK30gLy8g
bmFtZXNwYWNlIFdURgorCisjZW5kaWYgLyogV1RGX1N5c3RlbU1lbW9yeVN0YXR1c19oICovCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139247</attachid>
            <date>2012-04-27 12:34:34 -0700</date>
            <delta_ts>2012-04-30 07:37:16 -0700</delta_ts>
            <desc>Fixed error caused by adding WTF namespace.</desc>
            <filename>85063.5.patch</filename>
            <type>text/plain</type>
            <size>4459</size>
            <attacher name="Lyon Chen">liachen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGYwNzQwYTcuLjI3ZWNlNzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA0LTI3ICBMaWFuZ2h1aSBDaGVu
ICA8bGlhY2hlbkByaW0uY29tPgorCisgICAgICAgIEFkZCBsb3cgbWVtb3J5IGNoZWNrIGluIEV4
ZWN1dGFibGVBbGxvY2F0b3I6OnVuZGVyTWVtb3J5UHJlc3N1cmUoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUwNjMKKworICAgICAgICBDYWxsIFdU
Rjo6aXNTeXN0ZW1NZW1vcnlMb3coKSB0byBjaGVjayB3aGV0aGVyIHN5c3RlbSBtZW1vcnkgaXMg
bG93IGluCisgICAgICAgIEV4ZWN1dGFibGVBbGxvY2F0b3I6OnVuZGVyTWVtb3J5UHJlc3N1cmUo
KS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpp
dC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9j
YXRvcjo6dW5kZXJNZW1vcnlQcmVzc3VyZSk6CisKIDIwMTItMDQtMjcgIEdhdmluIFBldGVycyAg
PGdhdmlucEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIG5ldyBFTkFCTEVfTElOS19QUkVS
RU5ERVIgZGVmaW5lIHRvIGNvbnRyb2wgdGhlIFByZXJlbmRlcmluZyBBUEkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCmluZGV4IGUzMGM4
OTIuLjI3ZjZlYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0
YWJsZUFsbG9jYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRh
YmxlQWxsb2NhdG9yLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2lmIEVOQUJMRShBU1NFTUJMRVJf
V1hfRVhDTFVTSVZFKQogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjZW5kaWYKKyNpbmNs
dWRlIDx3dGYvU3lzdGVtTWVtb3J5U3RhdHVzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1By
aW1pdGl2ZXMuaD4KICNpbmNsdWRlIDx3dGYvVk1UYWdzLmg+CiAjZW5kaWYKQEAgLTE4OCw5ICsx
ODksOSBAQCBib29sIEV4ZWN1dGFibGVBbGxvY2F0b3I6OmlzVmFsaWQoKSBjb25zdAogYm9vbCBF
eGVjdXRhYmxlQWxsb2NhdG9yOjp1bmRlck1lbW9yeVByZXNzdXJlKCkKIHsKICNpZmRlZiBFWEVD
VVRBQkxFX01FTU9SWV9MSU1JVAotICAgIHJldHVybiBEZW1hbmRFeGVjdXRhYmxlQWxsb2NhdG9y
OjpieXRlc0FsbG9jYXRlZEJ5QWxsQWxsb2NhdG9ycygpID4gRVhFQ1VUQUJMRV9NRU1PUllfTElN
SVQgLyAyOworICAgIHJldHVybiBpc1N5c3RlbU1lbW9yeUxvdygpIHx8IERlbWFuZEV4ZWN1dGFi
bGVBbGxvY2F0b3I6OmJ5dGVzQWxsb2NhdGVkQnlBbGxBbGxvY2F0b3JzKCkgPiBFWEVDVVRBQkxF
X01FTU9SWV9MSU1JVCAvIDI7CiAjZWxzZQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
aXNTeXN0ZW1NZW1vcnlMb3coKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGYwZjM0NWMuLjliZDYwMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDQtMjcgIExpYW5naHVpIENoZW4gIDxsaWFjaGVu
QHJpbS5jb20+CisKKyAgICAgICAgQWRkIGxvdyBtZW1vcnkgY2hlY2sgaW4gRXhlY3V0YWJsZUFs
bG9jYXRvcjo6dW5kZXJNZW1vcnlQcmVzc3VyZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTA2MworCisgICAgICAgIEFkZCBTeXN0ZW1NZW1vcnlT
dGF0dXMuaCBmaWxlIHRvIGFkZCBwbGF0Zm9ybSBzcGVjaWZpYyBtZW1vcnkgc3RhdHVzCisgICAg
ICAgIGZ1bmN0aW9ucy4gUmlnaHQgbm93IGl0IGlzIG9ubHkgaXNTeXN0ZW1NZW1vcnlMb3coKS4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9T
eXN0ZW1NZW1vcnlTdGF0dXMuaDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAgICAoV1RG
Ojppc01lbW9yeUxvdyk6CisKIDIwMTItMDQtMjYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQXSBBZGQgYSB3YXkgdG8gcmVnaXN0ZXIg
Y3VzdG9tIHVyaSBzY2hlbWVzIGluIFdlYktpdDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1N5c3RlbU1lbW9yeVN0YXR1cy5oIGIvU291cmNlL1dURi93dGYvU3lzdGVtTWVtb3J5U3RhdHVz
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWViNjA5MgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N5c3RlbU1lbW9yeVN0YXR1cy5oCkBAIC0wLDAgKzEs
NDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0
ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXVEZfU3lzdGVtTWVtb3J5
U3RhdHVzX2gKKyNkZWZpbmUgV1RGX1N5c3RlbU1lbW9yeVN0YXR1c19oCisKKyNpbmNsdWRlIDx3
dGYvUGxhdGZvcm0uaD4KKworI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCisjaW5jbHVkZSA8Qmxh
Y2tCZXJyeVBsYXRmb3JtTWVtb3J5Lmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisKKyNp
ZiBQTEFURk9STShCTEFDS0JFUlJZKQorCitpbmxpbmUgYm9vbCBpc1N5c3RlbU1lbW9yeUxvdygp
IHsgcmV0dXJuIEJsYWNrQmVycnk6OlBsYXRmb3JtOjppc01lbW9yeUxvdygpOyB9CisKKyNlbHNl
CisKK2lubGluZSBib29sIGlzU3lzdGVtTWVtb3J5TG93KCkgeyByZXR1cm4gZmFsc2U7IH0KKwor
I2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLyogV1RGX1N5c3RlbU1lbW9y
eVN0YXR1c19oICovCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139452</attachid>
            <date>2012-04-30 07:37:16 -0700</date>
            <delta_ts>2012-05-03 13:50:44 -0700</delta_ts>
            <desc>Patch based on Antonio&apos;s Comment 15</desc>
            <filename>85063.6.patch</filename>
            <type>text/plain</type>
            <size>4531</size>
            <attacher name="Lyon Chen">liachen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGZmODM2YWEuLmVlMTU4ODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA0LTMwICBMaWFuZ2h1aSBDaGVu
ICA8bGlhY2hlbkByaW0uY29tPgorCisgICAgICAgIEFkZCBsb3cgbWVtb3J5IGNoZWNrIGluIEV4
ZWN1dGFibGVBbGxvY2F0b3I6OnVuZGVyTWVtb3J5UHJlc3N1cmUoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUwNjMKKworICAgICAgICBDYWxsIFdU
Rjo6aXNTeXN0ZW1NZW1vcnlMb3coKSB0byBjaGVjayB3aGV0aGVyIHN5c3RlbSBtZW1vcnkgaXMg
bG93IGluCisgICAgICAgIEV4ZWN1dGFibGVBbGxvY2F0b3I6OnVuZGVyTWVtb3J5UHJlc3N1cmUo
KS4gVGhpcyB3aWxsIGZvcmNlIGNvbGxlY3RpbmcKKyAgICAgICAgb2YgZ2FyYmFnZSwgdGh1cyBh
dm9pZGluZyBvdXQgb2Ygc3lzdGVtIG1lbW9yeSB3aGlsZSBhdCB0aGUgc2FtZSB0aW1lCisgICAg
ICAgIHdlIGhhdmUgYSBsb3Qgb2YgdW51c2VkIG1lbW9yeSB3YWl0aW5nIHRvIGJlIHJlbGVhc2Vk
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaml0
L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2Nh
dG9yOjp1bmRlck1lbW9yeVByZXNzdXJlKToKKwogMjAxMi0wNC0zMCAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4IG1h
a2UgZGlzdGNoZWNrLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVj
dXRhYmxlQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJs
ZUFsbG9jYXRvci5jcHAKaW5kZXggZTMwYzg5Mi4uMjdmNmViMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCkBAIC0zNSw2ICszNSw3
IEBACiAjaWYgRU5BQkxFKEFTU0VNQkxFUl9XWF9FWENMVVNJVkUpCiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KICNlbmRpZgorI2luY2x1ZGUgPHd0Zi9TeXN0ZW1NZW1vcnlTdGF0dXMuaD4K
ICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogI2luY2x1ZGUgPHd0Zi9WTVRh
Z3MuaD4KICNlbmRpZgpAQCAtMTg4LDkgKzE4OSw5IEBAIGJvb2wgRXhlY3V0YWJsZUFsbG9jYXRv
cjo6aXNWYWxpZCgpIGNvbnN0CiBib29sIEV4ZWN1dGFibGVBbGxvY2F0b3I6OnVuZGVyTWVtb3J5
UHJlc3N1cmUoKQogewogI2lmZGVmIEVYRUNVVEFCTEVfTUVNT1JZX0xJTUlUCi0gICAgcmV0dXJu
IERlbWFuZEV4ZWN1dGFibGVBbGxvY2F0b3I6OmJ5dGVzQWxsb2NhdGVkQnlBbGxBbGxvY2F0b3Jz
KCkgPiBFWEVDVVRBQkxFX01FTU9SWV9MSU1JVCAvIDI7CisgICAgcmV0dXJuIGlzU3lzdGVtTWVt
b3J5TG93KCkgfHwgRGVtYW5kRXhlY3V0YWJsZUFsbG9jYXRvcjo6Ynl0ZXNBbGxvY2F0ZWRCeUFs
bEFsbG9jYXRvcnMoKSA+IEVYRUNVVEFCTEVfTUVNT1JZX0xJTUlUIC8gMjsKICNlbHNlCi0gICAg
cmV0dXJuIGZhbHNlOworICAgIHJldHVybiBpc1N5c3RlbU1lbW9yeUxvdygpOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKaW5kZXggYzJjMGM4OS4uZGViYzExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNC0z
MCAgTGlhbmdodWkgQ2hlbiAgPGxpYWNoZW5AcmltLmNvbT4KKworICAgICAgICBBZGQgbG93IG1l
bW9yeSBjaGVjayBpbiBFeGVjdXRhYmxlQWxsb2NhdG9yOjp1bmRlck1lbW9yeVByZXNzdXJlKCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1MDYzCisK
KyAgICAgICAgQWRkIFN5c3RlbU1lbW9yeVN0YXR1cy5oIGZpbGUgdG8gYWRkIHBsYXRmb3JtIHNw
ZWNpZmljIG1lbW9yeSBzdGF0dXMKKyAgICAgICAgZnVuY3Rpb25zLiBSaWdodCBub3cgaXQgaXMg
b25seSBpc1N5c3RlbU1lbW9yeUxvdygpLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL1N5c3RlbU1lbW9yeVN0YXR1cy5oOiBBZGRlZC4KKyAg
ICAgICAgKFdURik6CisgICAgICAgIChXVEY6OmlzU3lzdGVtTWVtb3J5TG93KToKKwogMjAxMi0w
NC0yOSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW01hY10g
QWRkIExvY2FsaXplZERhdGVNYWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N5c3RlbU1l
bW9yeVN0YXR1cy5oIGIvU291cmNlL1dURi93dGYvU3lzdGVtTWVtb3J5U3RhdHVzLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY3MDUzZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1N5c3RlbU1lbW9yeVN0YXR1cy5oCkBAIC0wLDAgKzEsNDggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXVEZfU3lzdGVtTWVtb3J5U3RhdHVzX2gK
KyNkZWZpbmUgV1RGX1N5c3RlbU1lbW9yeVN0YXR1c19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZv
cm0uaD4KKworI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCisjaW5jbHVkZSA8QmxhY2tCZXJyeVBs
YXRmb3JtTWVtb3J5Lmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisKK2lubGluZSBib29s
IGlzU3lzdGVtTWVtb3J5TG93KCkKK3sKKyNpZiBQTEFURk9STShCTEFDS0JFUlJZKQorICAgIHJl
dHVybiBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6aXNNZW1vcnlMb3coKTsKKyNlbHNlCisgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLyog
V1RGX1N5c3RlbU1lbW9yeVN0YXR1c19oICovCg==
</data>
<flag name="review"
          id="145093"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>