<?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>101740</bug_id>
          
          <creation_ts>2012-11-09 04:52:19 -0800</creation_ts>
          <short_desc>[Qt][ARM][MIPS]REGRESSION(r133953): It broke the build</short_desc>
          <delta_ts>2012-11-15 04:26:19 -0800</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>420+</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P1</priority>
          <bug_severity>Blocker</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>102225</dependson>
          <blocked>98606</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Csaba Osztrogonác">ossy</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>fu</cc>
    
    <cc>gaborb</cc>
    
    <cc>galpeter</cc>
    
    <cc>gergely</cc>
    
    <cc>hausmann</cc>
    
    <cc>kilvadyb</cc>
    
    <cc>loki</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>palfia</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>762843</commentid>
    <comment_count>0</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-11-09 04:52:19 -0800</bug_when>
    <thetext>It broke the Qt ARMv7 (thumb2) build with the following error:
/mnt/raptor2/slaves/qt5-linux-armv7-release/build/WebKitBuild/Release/lib/libJavaScriptCore.so: undefined reference to `JSC::AbstractMacroAssembler&lt;JSC::ARMv7Assembler&gt;::JumpList JSC::JIT::emitGenericContiguousPutByVal&lt;(unsigned char)20&gt;(JSC::Instruction*, JSC::AbstractMacroAssembler&lt;JSC::ARMv7Assembler&gt;::PatchableJump&amp;)&apos;
/mnt/raptor2/slaves/qt5-linux-armv7-release/build/WebKitBuild/Release/lib/libJavaScriptCore.so: undefined reference to `JSC::AbstractMacroAssembler&lt;JSC::ARMv7Assembler&gt;::JumpList JSC::JIT::emitGenericContiguousPutByVal&lt;(unsigned char)22&gt;(JSC::Instruction*, JSC::AbstractMacroAssembler&lt;JSC::ARMv7Assembler&gt;::PatchableJump&amp;)&apos;
collect2: error: ld returned 1 exit status
make[3]: *** [../../bin/jsc] Error 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762936</commentid>
    <comment_count>1</comment_count>
    <who name="Peter Gal">galpeter</who>
    <bug_when>2012-11-09 06:12:20 -0800</bug_when>
    <thetext>this is related to the MIPS one: https://bugs.webkit.org/show_bug.cgi?id=101704
and the real culprit is this I think: http://trac.webkit.org/changeset/133953</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762947</commentid>
    <comment_count>2</comment_count>
      <attachid>173294</attachid>
    <who name="Peter Gal">galpeter</who>
    <bug_when>2012-11-09 06:23:40 -0800</bug_when>
    <thetext>Created attachment 173294
proposed fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762951</commentid>
    <comment_count>3</comment_count>
      <attachid>173294</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-11-09 06:27:26 -0800</bug_when>
    <thetext>Comment on attachment 173294
proposed fix.

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

&gt; Source/JavaScriptCore/jit/JITPropertyAccess.cpp:355
&gt; -template&lt;IndexingType indexingShape&gt;
&gt; -JIT::JumpList JIT::emitGenericContiguousPutByVal(Instruction* currentInstruction, PatchableJump&amp; badType)
&gt; +JIT::JumpList JIT::emitGenericContiguousPutByVal(Instruction* currentInstruction, PatchableJump&amp; badType, IndexingType indexingShape)

I think the goal if it being a template is to generate a faster implementation, i.e. indexingShape is a compile time constant instead of a variable at run-time that&apos;s on the stack.

So I don&apos;t think it should become a regular method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762954</commentid>
    <comment_count>4</comment_count>
    <who name="Peter Gal">galpeter</who>
    <bug_when>2012-11-09 06:30:19 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 173294 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=173294&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/jit/JITPropertyAccess.cpp:355
&gt; &gt; -template&lt;IndexingType indexingShape&gt;
&gt; &gt; -JIT::JumpList JIT::emitGenericContiguousPutByVal(Instruction* currentInstruction, PatchableJump&amp; badType)
&gt; &gt; +JIT::JumpList JIT::emitGenericContiguousPutByVal(Instruction* currentInstruction, PatchableJump&amp; badType, IndexingType indexingShape)
&gt; 
&gt; I think the goal if it being a template is to generate a faster implementation, i.e. indexingShape is a compile time constant instead of a variable at run-time that&apos;s on the stack.
&gt; 
&gt; So I don&apos;t think it should become a regular method.

I know the reason, but: 
&quot;&quot;&quot;Because templates are compiled when required, this forces a restriction for multi-file projects: the implementation (definition) of a template class or function must be in the same file as its declaration. That means that we cannot separate the interface in a separate header file, and that we must include both interface and implementation in any file that uses the templates.&quot;&quot;&quot;

and also the GetByVal counterpart is implemented almost in the same way (and not with templates).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762958</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-11-09 06:35:26 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 173294 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=173294&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/jit/JITPropertyAccess.cpp:355
&gt; &gt; &gt; -template&lt;IndexingType indexingShape&gt;
&gt; &gt; &gt; -JIT::JumpList JIT::emitGenericContiguousPutByVal(Instruction* currentInstruction, PatchableJump&amp; badType)
&gt; &gt; &gt; +JIT::JumpList JIT::emitGenericContiguousPutByVal(Instruction* currentInstruction, PatchableJump&amp; badType, IndexingType indexingShape)
&gt; &gt; 
&gt; &gt; I think the goal if it being a template is to generate a faster implementation, i.e. indexingShape is a compile time constant instead of a variable at run-time that&apos;s on the stack.
&gt; &gt; 
&gt; &gt; So I don&apos;t think it should become a regular method.
&gt; 
&gt; I know the reason, but: 
&gt; &quot;&quot;&quot;Because templates are compiled when required, this forces a restriction for multi-file projects: the implementation (definition) of a template class or function must be in the same file as its declaration. That means that we cannot separate the interface in a separate header file, and that we must include both interface and implementation in any file that uses the templates.&quot;&quot;&quot;
&gt; 
&gt; and also the GetByVal counterpart is implemented almost in the same way (and not with templates).

Hmm, isn&apos;t the template function called from JITPropertyAccess.cpp and also defined there?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762969</commentid>
    <comment_count>6</comment_count>
    <who name="Peter Gal">galpeter</who>
    <bug_when>2012-11-09 06:46:48 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; (From update of attachment 173294 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=173294&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/JavaScriptCore/jit/JITPropertyAccess.cpp:355
&gt; &gt; &gt; &gt; -template&lt;IndexingType indexingShape&gt;
&gt; &gt; &gt; &gt; -JIT::JumpList JIT::emitGenericContiguousPutByVal(Instruction* currentInstruction, PatchableJump&amp; badType)
&gt; &gt; &gt; &gt; +JIT::JumpList JIT::emitGenericContiguousPutByVal(Instruction* currentInstruction, PatchableJump&amp; badType, IndexingType indexingShape)
&gt; &gt; &gt; 
&gt; &gt; &gt; I think the goal if it being a template is to generate a faster implementation, i.e. indexingShape is a compile time constant instead of a variable at run-time that&apos;s on the stack.
&gt; &gt; &gt; 
&gt; &gt; &gt; So I don&apos;t think it should become a regular method.
&gt; &gt; 
&gt; &gt; I know the reason, but: 
&gt; &gt; &quot;&quot;&quot;Because templates are compiled when required, this forces a restriction for multi-file projects: the implementation (definition) of a template class or function must be in the same file as its declaration. That means that we cannot separate the interface in a separate header file, and that we must include both interface and implementation in any file that uses the templates.&quot;&quot;&quot;
&gt; &gt; 
&gt; &gt; and also the GetByVal counterpart is implemented almost in the same way (and not with templates).
&gt; 
&gt; Hmm, isn&apos;t the template function called from JITPropertyAccess.cpp and also defined there?


The implementation of emitGenericContiguousPutByVal is in the JITPropertyAccess.cpp/JITPropertyAccess64_32.cpp but it is used in the JIT.h. Maybe this leads to a problem when it is included from somewhere else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762978</commentid>
    <comment_count>7</comment_count>
    <who name="Peter Gal">galpeter</who>
    <bug_when>2012-11-09 06:54:39 -0800</bug_when>
    <thetext>hmmm... maybe if I move the implementation of the emit{Int32,Double,..}PutByVal to the corresponding cpp it would be ok with the templates, but then it should be in both cpps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763017</commentid>
    <comment_count>8</comment_count>
    <who name="Peter Gal">galpeter</who>
    <bug_when>2012-11-09 07:50:40 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; hmmm... maybe if I move the implementation of the emit{Int32,Double,..}PutByVal to the corresponding cpp it would be ok with the templates, but then it should be in both cpps.

I tried moving the implementation of these methods to the general parot of the JITPropertyAccess.cpp file, but The error message remained. After thinking it through the same situation occured.

So I think there is only 2 possible solution:
 1) use the my first patch which removes the template or
 2) move the emit{Int32,..}PutByVal implementation to both JITPropertyAccess files and there will be code duplication.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763029</commentid>
    <comment_count>9</comment_count>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2012-11-09 08:02:52 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; hmmm... maybe if I move the implementation of the emit{Int32,Double,..}PutByVal to the corresponding cpp it would be ok with the templates, but then it should be in both cpps.
&gt; 
&gt; I tried moving the implementation of these methods to the general parot of the JITPropertyAccess.cpp file, but The error message remained. After thinking it through the same situation occured.
&gt; 
&gt; So I think there is only 2 possible solution:
&gt;  1) use the my first patch which removes the template or
&gt;  2) move the emit{Int32,..}PutByVal implementation to both JITPropertyAccess files and there will be code duplication.

The problem is that on mips VALUE_PROFILER not enabled currently and by:
inline JITArrayMode JIT::chooseArrayMode(ArrayProfile* profile)
{
#if ENABLE(VALUE_PROFILER)
    profile-&gt;computeUpdatedPrediction(m_codeBlock);
    ArrayModes arrayModes = profile-&gt;observedArrayModes();
    if (arrayProfileSaw(arrayModes, DoubleShape))
        return JITDouble;
    if (arrayProfileSaw(arrayModes, Int32Shape))
        return JITInt32;
    if (arrayProfileSaw(arrayModes, ArrayStorageShape))
        return JITArrayStorage;
    return JITContiguous;
#else
    UNUSED_PARAM(profile);
    return JITContiguous;
#endif
}

And in jit/JITPropertyAccess32_64.cpp the body of the template function emitGenericContiguousPutByVal&lt;&gt; not instantiated/compiled in for Int32 and Double types. but they are declared in the jit.h header so JITPropertyAccess.cpp can reference to them. I don&apos;t know where to put the implementation of template function. Maybe in the header? Or just don&apos;t use shorthands like emitInt32PutByVal but template calls as emitGenericContiguousPutByVal&lt;Int32Shape&gt;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763076</commentid>
    <comment_count>10</comment_count>
      <attachid>173323</attachid>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2012-11-09 09:17:05 -0800</bug_when>
    <thetext>Created attachment 173323
Keep template fix

Template implementation moved from JITPropertyAccess32_64.cpp to JITPropertyAccess.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763089</commentid>
    <comment_count>11</comment_count>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2012-11-09 09:30:14 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; hmmm... maybe if I move the implementation of the emit{Int32,Double,..}PutByVal to the corresponding cpp it would be ok with the templates, but then it should be in both cpps.
&gt; 
&gt; I tried moving the implementation of these methods to the general parot of the JITPropertyAccess.cpp file, but The error message remained. After thinking it through the same situation occured.
&gt; 
&gt; So I think there is only 2 possible solution:
&gt;  1) use the my first patch which removes the template or
&gt;  2) move the emit{Int32,..}PutByVal implementation to both JITPropertyAccess files and there will be code duplication.

In JITPropertyAccess.cpp there is a emitGenericContiguousPutByVal implementation for JSVALUE64 case. When I move the 32 bit implementation of the template function from JITPropertyAccess32_64.cpp to JITPropertyAccess.cpp then the Int32 and Double typed version of the template won&apos;t be optimized out and tests are successful with the compiled jsc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764532</commentid>
    <comment_count>12</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-11-12 10:06:19 -0800</bug_when>
    <thetext>ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765367</commentid>
    <comment_count>13</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-11-13 00:54:58 -0800</bug_when>
    <thetext>ping again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765369</commentid>
    <comment_count>14</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-11-13 00:56:19 -0800</bug_when>
    <thetext>*** Bug 101704 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766506</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-11-13 23:46:05 -0800</bug_when>
    <thetext>ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766809</commentid>
    <comment_count>16</comment_count>
    <who name="Peter Gal">galpeter</who>
    <bug_when>2012-11-14 06:10:08 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=173323) [details]
&gt; Keep template fix
&gt; 
&gt; Template implementation moved from JITPropertyAccess32_64.cpp to JITPropertyAccess.cpp.

I don&apos;t really like this, because you move a JSVALUE32_64 specific code to the general JSPropertyAccess.cpp. A developer could miss it if he/she only checks the 32_64 file. (I know it&apos;s not a big reason, but then why does the 32_64.cpp file exists...)

If this is not a solid reason, then ok. go with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766814</commentid>
    <comment_count>17</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-11-14 06:17:44 -0800</bug_when>
    <thetext>The JSVALUE64 implementation of emitGenericContiguousPutByVal is in JITPropertyAccess.cpp now. It isn&apos;t so nice, but I don&apos;t have better idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766816</commentid>
    <comment_count>18</comment_count>
      <attachid>173323</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-11-14 06:20:04 -0800</bug_when>
    <thetext>Comment on attachment 173323
Keep template fix

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

I think it isn&apos;t the best way to fix this bug ... but now I don&apos;t have better idea.

And it is a pending bug fix a valid _build_fail_ after 5 days. I don&apos;t think if
we should wait more 5 days to fix the build, so r=me with the typo fix I mentioned.

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Templete function body moved to fix VALUE_PROFILER disabled case.

s/Templete/Template</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766819</commentid>
    <comment_count>19</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-11-14 06:25:20 -0800</bug_when>
    <thetext>Fix landed in http://trac.webkit.org/changeset/134599 with the changelog fix and removed ugly whitespace lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766834</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-14 06:40:00 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 102225</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766842</commentid>
    <comment_count>21</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-11-14 06:43:50 -0800</bug_when>
    <thetext>Rolled out by http://trac.webkit.org/changeset/134602,
because it broke the 32 bit EFL build:

Linking CXX executable ../../../bin/jsc
../../../lib/libjavascriptcore_efl.so.0.1.0: undefined reference to `JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::JumpList JSC::JIT::emitGenericContiguousPutByVal&lt;(unsigned char)26&gt;(JSC::Instruction*, JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::PatchableJump&amp;)&apos;
../../../lib/libjavascriptcore_efl.so.0.1.0: undefined reference to `JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::JumpList JSC::JIT::emitGenericContiguousPutByVal&lt;(unsigned char)20&gt;(JSC::Instruction*, JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::PatchableJump&amp;)&apos;
collect2: ld returned 1 exit status
make[2]: *** [bin/jsc] Error 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766905</commentid>
    <comment_count>22</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-11-14 08:08:40 -0800</bug_when>
    <thetext>Any idea?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766909</commentid>
    <comment_count>23</comment_count>
    <who name="Peter Gal">galpeter</who>
    <bug_when>2012-11-14 08:11:43 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; Any idea?

use my patch? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766911</commentid>
    <comment_count>24</comment_count>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2012-11-14 08:14:23 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #22)
&gt; &gt; Any idea?
&gt; 
&gt; use my patch? :)

(In reply to comment #22)
&gt; Any idea?

Could you add any of the patches to commit queue or should I resend/rebase mine? Other patch is ok for me, too just let&apos;s go on somehow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766912</commentid>
    <comment_count>25</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-11-14 08:16:00 -0800</bug_when>
    <thetext>We tried your patch landing ... but we had to revert, because it broke the 32 bit EFL build ... :-/ That&apos;s why I asked: Any idea?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766913</commentid>
    <comment_count>26</comment_count>
      <attachid>173294</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-11-14 08:16:54 -0800</bug_when>
    <thetext>Comment on attachment 173294
proposed fix.

Let&apos;s try this one. :) Working build is more important than performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766915</commentid>
    <comment_count>27</comment_count>
      <attachid>173294</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-11-14 08:18:45 -0800</bug_when>
    <thetext>Comment on attachment 173294
proposed fix.

Clearing flags on attachment: 173294

Committed r134612: &lt;http://trac.webkit.org/changeset/134612&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766916</commentid>
    <comment_count>28</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-11-14 08:18:53 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767940</commentid>
    <comment_count>29</comment_count>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2012-11-15 04:26:19 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; Any idea?

It&apos;s a very hacky solution but if with keeping templates much performance gain can be achieved then:
By the error messages the problem comes up when the body of the 3 inline functions from the JIT.h header should be linked. We could force the compiler to compile in the template codes instantiated with all the 3 type parameters with a simple function in JITPropertyAccess32_64.cpp:

void forceTemplateCompilation()
{
    emitInt32PutByVal(currentInstruction, badType); // emitGenericContiguousPutByVal&lt;(unsigned char)20&gt;
    emitDoublePutByVal(currentInstruction, badType);
    emitContiguousPutByVal(currentInstruction, badType);
}

This function shouldn&apos;t be called ever but as an exportable one the compiler cannot optimize out the 3 version of the template whichever ENABLE_/USE_ macro combination are used. This function would be &quot;Objective-C like private: not mentioned in the header).

As I tested the compilation the problems come from that that the above listed 3 functions declared in JIT.h so for &lt;(unsigned char)20&gt;, &lt;(unsigned char)22&gt;, &lt;(unsigned char)26&gt; the template codes of emitGenericContiguousPutByVal&lt;&gt; should be in the object file compiled from the cpp file which contains the template body. But with some ENABLE_ macro configurations the compiler sees that some of the 3 functions not used in JITPropertyAccess32_64.cpp so not compiled in.

I can&apos;t test it in EFL build env.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173294</attachid>
            <date>2012-11-09 06:23:40 -0800</date>
            <delta_ts>2012-11-14 08:18:45 -0800</delta_ts>
            <desc>proposed fix.</desc>
            <filename>arm_jit_emitCont.patch</filename>
            <type>text/plain</type>
            <size>4560</size>
            <attacher name="Peter Gal">galpeter</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDViODQzNjkuLmM1MWVmODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTExLTA5ICBQZXRlciBHYWwgIDxn
YWxwZXRlckBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgW1F0XVtBUk1dUkVHUkVTU0lPTihy
MTMzOTg1KTogSXQgYnJva2UgdGhlIGJ1aWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE3NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VkIHRoZSBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRC
eVZhbCB0byBhY2NlcHQgdGhlIGFkZGl0aW9uYWwgSW5kZXhpbmdUeXBlIGFyZ3VtZW50LgorICAg
ICAgICBUaGlzIGluZm9ybWF0aW9uIHdhcyBwYXNzZWQgYXMgYSB0ZW1wbGF0ZSBwYXJhbWV0ZXIu
ICAgICAgICAKKworICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
SW50MzJQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdERvdWJsZVB1dEJ5VmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0Q29udGlndW91c1B1dEJ5VmFsKToKKyAgICAgICAgKEpJ
VCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbCk6CisgICAgICAgICogaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZW5lcmljQ29u
dGlndW91c1B1dEJ5VmFsKToKKwogMjAxMi0xMS0wOSAgR2Fib3IgQmFsbGFiYXMgIDxnYWJvcmJA
aW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFtRdF0gcjEzMzk1MyBicm9rZSB0aGUgQVJNX1RS
QURJVElPTkFMIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA5YjA4NzlmLi4xNjA4
MWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTQ4NywxOCArNDg3LDE3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAvLyByZXR1cm5zIHRoZSBzbG93IGNhc2VzLgogICAgICAgICBK
dW1wTGlzdCBlbWl0SW50MzJQdXRCeVZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWw8SW50MzJTaGFwZT4oY3VycmVudEluc3RydWN0
aW9uLCBiYWRUeXBlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQ
dXRCeVZhbChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIEludDMyU2hhcGUpOwogICAgICAg
ICB9CiAgICAgICAgIEp1bXBMaXN0IGVtaXREb3VibGVQdXRCeVZhbChJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWw8RG91YmxlU2hhcGU+
KGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEdl
bmVyaWNDb250aWd1b3VzUHV0QnlWYWwoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlLCBEb3Vi
bGVTaGFwZSk7CiAgICAgICAgIH0KICAgICAgICAgSnVtcExpc3QgZW1pdENvbnRpZ3VvdXNQdXRC
eVZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQYXRjaGFibGVKdW1wJiBiYWRU
eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1b3Vz
UHV0QnlWYWw8Q29udGlndW91c1NoYXBlPihjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOwor
ICAgICAgICAgICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGN1cnJlbnRJ
bnN0cnVjdGlvbiwgYmFkVHlwZSk7CiAgICAgICAgIH0KLSAgICAgICAgdGVtcGxhdGU8SW5kZXhp
bmdUeXBlIGluZGV4aW5nU2hhcGU+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRHZW5lcmljQ29udGln
dW91c1B1dEJ5VmFsKEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSk7CisgICAg
ICAgIEp1bXBMaXN0IGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKEluc3RydWN0aW9uKiwg
UGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUgPSBDb250
aWd1b3VzU2hhcGUpOwogICAgICAgICBKdW1wTGlzdCBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwo
SW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKTsKICAgICAgICAgSnVtcExpc3Qg
ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5cGUsIGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJiwgc2l6ZV90IGVsZW1lbnRTaXplLCBU
eXBlZEFycmF5U2lnbmVkbmVzcywgVHlwZWRBcnJheVJvdW5kaW5nKTsKICAgICAgICAgSnVtcExp
c3QgZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVt
cCYgYmFkVHlwZSwgY29uc3QgVHlwZWRBcnJheURlc2NyaXB0b3ImLCBzaXplX3QgZWxlbWVudFNp
emUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cAppbmRleCAzMTEwYmUzLi41N2E1Njg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMzUyLDggKzM1Miw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX3B1dF9ieV92YWwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBl
bWl0V3JpdGVCYXJyaWVyKHJlZ1QwLCByZWdUMywgcmVnVDEsIHJlZ1QzLCBTaG91bGRGaWx0ZXJJ
bW1lZGlhdGVzLCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcyk7CiB9CiAKLXRlbXBsYXRl
PEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlPgotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5l
cmljQ29udGlndW91c1B1dEJ5VmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250
aWd1b3VzUHV0QnlWYWwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUGF0Y2hhYmxl
SnVtcCYgYmFkVHlwZSwgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUpCiB7CiAgICAgdW5zaWdu
ZWQgdmFsdWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgIEFycmF5UHJv
ZmlsZSogcHJvZmlsZSA9IGN1cnJlbnRJbnN0cnVjdGlvbls0XS51LmFycmF5UHJvZmlsZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCmluZGV4IDQxNDgyNzQuLmJlMTQ2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMzE3LDggKzMxNyw3IEBA
IHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvLmFwcGVuZChCeVZhbENvbXBpbGF0aW9u
SW5mbyhtX2J5dGVjb2RlT2Zmc2V0LCBiYWRUeXBlLCBtb2RlLCBkb25lKSk7CiB9CiAKLXRlbXBs
YXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlPgotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRH
ZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWND
b250aWd1b3VzUHV0QnlWYWwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUGF0Y2hh
YmxlSnVtcCYgYmFkVHlwZSwgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUpCiB7CiAgICAgdW5z
aWduZWQgdmFsdWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgIEFycmF5
UHJvZmlsZSogcHJvZmlsZSA9IGN1cnJlbnRJbnN0cnVjdGlvbls0XS51LmFycmF5UHJvZmlsZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173323</attachid>
            <date>2012-11-09 09:17:05 -0800</date>
            <delta_ts>2012-11-14 06:25:39 -0800</delta_ts>
            <desc>Keep template fix</desc>
            <filename>template.diff</filename>
            <type>text/plain</type>
            <size>6366</size>
            <attacher name="Balazs Kilvady">kilvadyb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGQ2MzY4MzAuLjNkNTM4NTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTExLTA5ICBCYWxhenMgS2lsdmFk
eSAgPGtpbHZhZHliQGhvbWVqaW5uaS5jb20+CisKKyAgICAgICAgW1F0XVtBUk1dUkVHUkVTU0lP
TihyMTMzOTg1KTogSXQgYnJva2UgdGhlIGJ1aWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE3NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUZW1wbGV0ZSBmdW5jdGlvbiBib2R5IG1vdmVkIHRvIGZp
eCBWQUxVRV9QUk9GSUxFUiBkaXNhYmxlZCBjYXNlLgorCisgICAgICAgICogaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEdl
bmVyaWNDb250aWd1b3VzUHV0QnlWYWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcDoKKwogMjAxMi0xMS0wOSAgR2Fib3IgQmFsbGFiYXMgIDxnYWJvcmJAaW5mLnUt
c3plZ2VkLmh1PgogCiAgICAgICAgIFtRdF0gcjEzMzk1MyBicm9rZSB0aGUgQVJNX1RSQURJVElP
TkFMIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCmluZGV4IDMxMTBiZTMuLjNmNmM5NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0xMjQ0LDYgKzEyNDQsNjUgQEAgdm9p
ZCBKSVQ6OnJlc2V0UGF0Y2hQdXRCeUlkKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIsIFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHUKICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8t
PmhvdFBhdGhCZWdpbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGlu
ZS51LnB1dC5kaXNwbGFjZW1lbnRMYWJlbCksIDApOwogfQogCisjZWxzZQorCit0ZW1wbGF0ZTxJ
bmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZT4KK0pJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJp
Y0NvbnRpZ3VvdXNQdXRCeVZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlKQoreworICAgIHVuc2lnbmVkIHZhbHVlID0gY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bNF0udS5hcnJheVByb2ZpbGU7CisgICAgCisgICAgSnVtcExpc3Qgc2xvd0Nh
c2VzOworICAgIAorICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVn
VDEsIFRydXN0ZWRJbW0zMihDb250aWd1b3VzU2hhcGUpKTsKKyAgICAKKyAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1QzKTsKKyAgICBK
dW1wIG91dE9mQm91bmRzID0gYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMiwgQWRkcmVzcyhy
ZWdUMywgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CisgICAgCisgICAgTGFi
ZWwgc3RvcmVSZXN1bHQgPSBsYWJlbCgpOworICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUMSwgcmVn
VDApOworICAgIHN3aXRjaCAoaW5kZXhpbmdTaGFwZSkgeworICAgIGNhc2UgSW50MzJTaGFwZToK
KyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKKyAgICAgICAgLy8gRmFsbCB0aHJvdWdoLgor
ICAgIGNhc2UgQ29udGlndW91c1NoYXBlOgorICAgICAgICBzdG9yZTMyKHJlZ1QwLCBCYXNlSW5k
ZXgocmVnVDMsIHJlZ1QyLCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5h
c0JpdHMucGF5bG9hZCkpKTsKKyAgICAgICAgc3RvcmUzMihyZWdUMSwgQmFzZUluZGV4KHJlZ1Qz
LCByZWdUMiwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRh
ZykpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEb3VibGVTaGFwZTogeworICAgICAgICBK
dW1wIG5vdEludCA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkludDMyVGFnKSk7CisgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKHJlZ1QwLCBmcFJl
Z1QwKTsKKyAgICAgICAgSnVtcCByZWFkeSA9IGp1bXAoKTsKKyAgICAgICAgbm90SW50Lmxpbmso
dGhpcyk7CisgICAgICAgIG1vdmVJbnRzVG9Eb3VibGUocmVnVDAsIHJlZ1QxLCBmcFJlZ1QwLCBm
cFJlZ1QxKTsKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hEb3VibGUoRG91YmxlTm90
RXF1YWxPclVub3JkZXJlZCwgZnBSZWdUMCwgZnBSZWdUMCkpOworICAgICAgICByZWFkeS5saW5r
KHRoaXMpOworICAgICAgICBzdG9yZURvdWJsZShmcFJlZ1QwLCBCYXNlSW5kZXgocmVnVDMsIHJl
Z1QyLCBUaW1lc0VpZ2h0KSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0Ogor
ICAgICAgICBDUkFTSCgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAorICAgIEp1
bXAgZG9uZSA9IGp1bXAoKTsKKyAgICAKKyAgICBvdXRPZkJvdW5kcy5saW5rKHRoaXMpOworICAg
IHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMiwgQWRkcmVzcyhy
ZWdUMywgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rvckxlbmd0aCgpKSkpOworICAgIAorICAgIGVt
aXRBcnJheVByb2ZpbGVTdG9yZVRvSG9sZVNwZWNpYWxDYXNlKHByb2ZpbGUpOworICAgIAorICAg
IGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDIsIHJlZ1QxKTsKKyAgICBzdG9yZTMyKHJlZ1Qx
LCBBZGRyZXNzKHJlZ1QzLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKKyAg
ICBqdW1wKCkubGlua1RvKHN0b3JlUmVzdWx0LCB0aGlzKTsKKyAgICAKKyAgICBkb25lLmxpbmso
dGhpcyk7CisgICAgCisgICAgZW1pdFdyaXRlQmFycmllcihyZWdUMCwgcmVnVDEsIHJlZ1QxLCBy
ZWdUMywgVW5jb25kaXRpb25hbFdyaXRlQmFycmllciwgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlB
Y2Nlc3MpOworICAgIAorICAgIHJldHVybiBzbG93Q2FzZXM7Cit9CisKICNlbmRpZiAvLyBVU0Uo
SlNWQUxVRTY0KQogCiB2b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcihSZWdpc3RlcklEIG93bmVy
LCBSZWdpc3RlcklEIHZhbHVlLCBSZWdpc3RlcklEIHNjcmF0Y2gsIFJlZ2lzdGVySUQgc2NyYXRj
aDIsIFdyaXRlQmFycmllck1vZGUgbW9kZSwgV3JpdGVCYXJyaWVyVXNlS2luZCB1c2VLaW5kKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMy
XzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82
NC5jcHAKaW5kZXggNDE0ODI3NC4uNDRlNWRiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0zMTcsNjMgKzMxNyw2
IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvLmFwcGVuZChCeVZhbENvbXBpbGF0
aW9uSW5mbyhtX2J5dGVjb2RlT2Zmc2V0LCBiYWRUeXBlLCBtb2RlLCBkb25lKSk7CiB9CiAKLXRl
bXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlPgotSklUOjpKdW1wTGlzdCBKSVQ6OmVt
aXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCi17Ci0gICAgdW5zaWduZWQgdmFsdWUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwotICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbls0XS51LmFycmF5UHJvZmlsZTsKLSAgICAKLSAgICBKdW1wTGlz
dCBzbG93Q2FzZXM7Ci0gICAgCi0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVx
dWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKENvbnRpZ3VvdXNTaGFwZSkpOwotICAgIAotICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVnVDMp
OwotICAgIEp1bXAgb3V0T2ZCb3VuZHMgPSBicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QyLCBB
ZGRyZXNzKHJlZ1QzLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKLSAgICAK
LSAgICBMYWJlbCBzdG9yZVJlc3VsdCA9IGxhYmVsKCk7Ci0gICAgZW1pdExvYWQodmFsdWUsIHJl
Z1QxLCByZWdUMCk7Ci0gICAgc3dpdGNoIChpbmRleGluZ1NoYXBlKSB7Ci0gICAgY2FzZSBJbnQz
MlNoYXBlOgotICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdU
MSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwotICAgICAgICAvLyBGYWxsIHRo
cm91Z2guCi0gICAgY2FzZSBDb250aWd1b3VzU2hhcGU6Ci0gICAgICAgIHN0b3JlMzIocmVnVDAs
IEJhc2VJbmRleChyZWdUMywgcmVnVDIsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihKU1Zh
bHVlLCB1LmFzQml0cy5wYXlsb2FkKSkpOwotICAgICAgICBzdG9yZTMyKHJlZ1QxLCBCYXNlSW5k
ZXgocmVnVDMsIHJlZ1QyLCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5h
c0JpdHMudGFnKSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIERvdWJsZVNoYXBlOiB7Ci0g
ICAgICAgIEp1bXAgbm90SW50ID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKLSAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUocmVn
VDAsIGZwUmVnVDApOwotICAgICAgICBKdW1wIHJlYWR5ID0ganVtcCgpOwotICAgICAgICBub3RJ
bnQubGluayh0aGlzKTsKLSAgICAgICAgbW92ZUludHNUb0RvdWJsZShyZWdUMCwgcmVnVDEsIGZw
UmVnVDAsIGZwUmVnVDEpOwotICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaERvdWJsZShE
b3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkLCBmcFJlZ1QwLCBmcFJlZ1QwKSk7Ci0gICAgICAgIHJl
YWR5LmxpbmsodGhpcyk7Ci0gICAgICAgIHN0b3JlRG91YmxlKGZwUmVnVDAsIEJhc2VJbmRleChy
ZWdUMywgcmVnVDIsIFRpbWVzRWlnaHQpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIENSQVNIKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICAgICAg
Ci0gICAgSnVtcCBkb25lID0ganVtcCgpOwotICAgIAotICAgIG91dE9mQm91bmRzLmxpbmsodGhp
cyk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QyLCBB
ZGRyZXNzKHJlZ1QzLCBCdXR0ZXJmbHk6Om9mZnNldE9mVmVjdG9yTGVuZ3RoKCkpKSk7Ci0gICAg
Ci0gICAgZW1pdEFycmF5UHJvZmlsZVN0b3JlVG9Ib2xlU3BlY2lhbENhc2UocHJvZmlsZSk7Ci0g
ICAgCi0gICAgYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCByZWdUMiwgcmVnVDEpOwotICAgIHN0b3Jl
MzIocmVnVDEsIEFkZHJlc3MocmVnVDMsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgo
KSkpOwotICAgIGp1bXAoKS5saW5rVG8oc3RvcmVSZXN1bHQsIHRoaXMpOwotICAgIAotICAgIGRv
bmUubGluayh0aGlzKTsKLSAgICAKLSAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwLCByZWdUMSwg
cmVnVDEsIHJlZ1QzLCBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyLCBXcml0ZUJhcnJpZXJGb3JQ
cm9wZXJ0eUFjY2Vzcyk7Ci0gICAgCi0gICAgcmV0dXJuIHNsb3dDYXNlczsKLX0KLQogSklUOjpK
dW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogewogICAgIHVuc2lnbmVkIHZh
bHVlID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>