<?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>130950</bug_id>
          
          <creation_ts>2014-03-30 19:34:59 -0700</creation_ts>
          <short_desc>LLVM IR for store barriers should be nicely arranged and they don&apos;t need exception checks</short_desc>
          <delta_ts>2014-03-31 09:21:32 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</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="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mhahnenberg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>995711</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-30 19:34:59 -0700</bug_when>
    <thetext>LLVM IR for store barriers should be nicely arranged</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995712</commentid>
    <comment_count>1</comment_count>
      <attachid>228137</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-30 19:35:40 -0700</bug_when>
    <thetext>Created attachment 228137
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995714</commentid>
    <comment_count>2</comment_count>
      <attachid>228138</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-30 19:44:54 -0700</bug_when>
    <thetext>Created attachment 228138
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995717</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-30 19:54:41 -0700</bug_when>
    <thetext>Here&apos;s what the IR looked like before:

; ModuleID = &apos;jsBody_1_foo_Edd6Yg&apos;

define i64 @jsBody_1_foo_Edd6Yg() #0 {
Prologue:
  %0 = alloca [0 x i64]
  %1 = ptrtoint [0 x i64]* %0 to i64
  %2 = add i64 %1, 0
  call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 0, i32 0, [0 x i64]* %0)
  %3 = call i8* @llvm.frameaddress(i32 0)
  %4 = ptrtoint i8* %3 to i64
  %5 = add i64 %4, 16
  %6 = inttoptr i64 %5 to i64*
  store i64 4484529536, i64* %6, !tbaa !0
  br i1 false, label %&quot;Stack overflow&quot;, label %&quot;Block #0&quot;, !prof !3

&quot;Stack overflow&quot;:                                 ; preds = %Prologue
  call void inttoptr (i64 4455035088 to void (i64, i64)*)(i64 %4, i64 4484529536)
  call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 1, i32 5)
  unreachable

&quot;Handle Exceptions&quot;:                              ; preds = %&quot;Store barrier buffer is full1&quot;
  call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 2, i32 5)
  unreachable

&quot;Block #0&quot;:                                       ; preds = %Prologue
  %7 = add i64 %4, 48
  %8 = inttoptr i64 %7 to i64*
  %9 = load i64* %8, !tbaa !4
  %10 = add i64 %4, 56
  %11 = inttoptr i64 %10 to i64*
  %12 = load i64* %11, !tbaa !5
  %13 = and i64 %12, -281474976710654
  %14 = icmp ne i64 %13, 0
  br i1 %14, label %&quot;OSR exit failCase for @1&quot;, label %&quot;OSR exit continuation for @1&quot;, !prof !3

&quot;OSR exit failCase for @1&quot;:                       ; preds = %&quot;Block #0&quot;
  call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 3, i32 5, i64 %12)
  unreachable

&quot;OSR exit continuation for @1&quot;:                   ; preds = %&quot;Block #0&quot;
  %15 = add i64 %4, 64
  %16 = inttoptr i64 %15 to i64*
  %17 = load i64* %16, !tbaa !6
  %18 = inttoptr i64 %12 to i32*
  %19 = load i32* %18, !tbaa !7
  %20 = icmp ne i32 %19, 268
  br i1 %20, label %&quot;OSR exit failCase for @5&quot;, label %&quot;OSR exit continuation for @5&quot;, !prof !3

&quot;OSR exit failCase for @5&quot;:                       ; preds = %&quot;OSR exit continuation for @1&quot;
  call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 4, i32 5, i64 %12)
  unreachable

&quot;OSR exit continuation for @5&quot;:                   ; preds = %&quot;OSR exit continuation for @1&quot;
  %21 = add i64 %12, 7
  %22 = inttoptr i64 %21 to i8*
  %23 = load i8* %22, !tbaa !8
  %24 = icmp ne i8 %23, 0
  br i1 %24, label %&quot;Store barrier continuation&quot;, label %&quot;Store barrier is marked block&quot;, !prof !9

&quot;Exception check continuation&quot;:                   ; preds = %&quot;Store barrier buffer is full1&quot;
  br label %&quot;Store barrier continuation&quot;

&quot;Store barrier continuation&quot;:                     ; preds = %&quot;Exception check continuation&quot;, %&quot;Store barrier buffer is full&quot;, %&quot;OSR exit continuation for @5&quot;
  %25 = inttoptr i64 %12 to i32*
  store i32 349, i32* %25, !tbaa !7
  %26 = add i64 %12, 16
  %27 = inttoptr i64 %26 to i64*
  store i64 %17, i64* %27, !tbaa !10
  ret i64 10

&quot;Store barrier is marked block&quot;:                  ; preds = %&quot;OSR exit continuation for @5&quot;
  %28 = load i32* inttoptr (i64 4461297704 to i32*), !tbaa !12
  %29 = load i32* inttoptr (i64 4461297708 to i32*), !tbaa !14
  %30 = icmp slt i32 %28, %29
  br i1 %30, label %&quot;Store barrier buffer is full&quot;, label %&quot;Store barrier buffer is full1&quot;, !prof !9

&quot;Store barrier buffer is full&quot;:                   ; preds = %&quot;Store barrier is marked block&quot;
  %31 = load i64* inttoptr (i64 4461297712 to i64*), !tbaa !15
  %32 = zext i32 %28 to i64
  %33 = shl i64 %32, 3
  %34 = add i64 %31, %33
  %35 = inttoptr i64 %34 to i64*
  store i64 %12, i64* %35, !tbaa !16
  %36 = add i32 %28, 1
  store i32 %36, i32* inttoptr (i64 4461297704 to i32*), !tbaa !12
  br label %&quot;Store barrier continuation&quot;

&quot;Store barrier buffer is full1&quot;:                  ; preds = %&quot;Store barrier is marked block&quot;
  %37 = add i64 %4, 44
  %38 = inttoptr i64 %37 to i32*
  store i32 -2147483648, i32* %38, !tbaa !17
  call void inttoptr (i64 4455063456 to void (i64, i64)*)(i64 %4, i64 %12)
  %39 = load i64* inttoptr (i64 4461304760 to i64*), !tbaa !18
  %40 = icmp ne i64 %39, 0
  br i1 %40, label %&quot;Handle Exceptions&quot;, label %&quot;Exception check continuation&quot;, !prof !3
}

declare void @llvm.experimental.stackmap(i64, i32, ...)

; Function Attrs: nounwind readnone
declare i8* @llvm.frameaddress(i32) #1

attributes #0 = { &quot;target-features&quot;=&quot;-avx&quot; }
attributes #1 = { nounwind readnone }

!0 = metadata !{metadata !&quot;variables_2&quot;, metadata !1}
!1 = metadata !{metadata !&quot;variables&quot;, metadata !2}
!2 = metadata !{metadata !&quot;jscRoot&quot;}
!3 = metadata !{metadata !&quot;branch_weights&quot;, i32 0, i32 2147483647}
!4 = metadata !{metadata !&quot;variables_6&quot;, metadata !1}
!5 = metadata !{metadata !&quot;variables_7&quot;, metadata !1}
!6 = metadata !{metadata !&quot;variables_8&quot;, metadata !1}
!7 = metadata !{metadata !&quot;JSCell_structureID&quot;, metadata !2}
!8 = metadata !{metadata !&quot;JSCell_gcData&quot;, metadata !2}
!9 = metadata !{metadata !&quot;branch_weights&quot;, i32 2147483647, i32 0}
!10 = metadata !{metadata !&quot;properties_0&quot;, metadata !11}
!11 = metadata !{metadata !&quot;properties&quot;, metadata !2}
!12 = metadata !{metadata !&quot;absolute_109EA0028&quot;, metadata !13}
!13 = metadata !{metadata !&quot;absolute&quot;, metadata !2}
!14 = metadata !{metadata !&quot;absolute_109EA002C&quot;, metadata !13}
!15 = metadata !{metadata !&quot;absolute_109EA0030&quot;, metadata !13}
!16 = metadata !{metadata !&quot;WriteBarrierBuffer_bufferContents&quot;, metadata !2}
!17 = metadata !{metadata !&quot;variables_5&quot;, metadata !1}
!18 = metadata !{metadata !&quot;absolute_109EA1BB8&quot;, metadata !13}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995718</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-30 19:55:18 -0700</bug_when>
    <thetext>Here&apos;s what it looks like now:

; ModuleID = &apos;jsBody_1_foo_Edd6Yg&apos;

define i64 @jsBody_1_foo_Edd6Yg() #0 {
Prologue:
  %0 = alloca [0 x i64]
  %1 = ptrtoint [0 x i64]* %0 to i64
  %2 = add i64 %1, 0
  call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 0, i32 0, [0 x i64]* %0)
  %3 = call i8* @llvm.frameaddress(i32 0)
  %4 = ptrtoint i8* %3 to i64
  %5 = add i64 %4, 16
  %6 = inttoptr i64 %5 to i64*
  store i64 4357389696, i64* %6, !tbaa !0
  br i1 false, label %&quot;Stack overflow&quot;, label %&quot;Block #0&quot;, !prof !3

&quot;Stack overflow&quot;:                                 ; preds = %Prologue
  call void inttoptr (i64 4327878832 to void (i64, i64)*)(i64 %4, i64 4357389696)
  call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 1, i32 5)
  unreachable

&quot;Handle Exceptions&quot;:                              ; No predecessors!
  call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 2, i32 5)
  unreachable

&quot;Block #0&quot;:                                       ; preds = %Prologue
  %7 = add i64 %4, 48
  %8 = inttoptr i64 %7 to i64*
  %9 = load i64* %8, !tbaa !4
  %10 = add i64 %4, 56
  %11 = inttoptr i64 %10 to i64*
  %12 = load i64* %11, !tbaa !5
  %13 = and i64 %12, -281474976710654
  %14 = icmp ne i64 %13, 0
  br i1 %14, label %&quot;OSR exit failCase for @1&quot;, label %&quot;OSR exit continuation for @1&quot;, !prof !3

&quot;OSR exit failCase for @1&quot;:                       ; preds = %&quot;Block #0&quot;
  call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 3, i32 5, i64 %12)
  unreachable

&quot;OSR exit continuation for @1&quot;:                   ; preds = %&quot;Block #0&quot;
  %15 = add i64 %4, 64
  %16 = inttoptr i64 %15 to i64*
  %17 = load i64* %16, !tbaa !6
  %18 = inttoptr i64 %12 to i32*
  %19 = load i32* %18, !tbaa !7
  %20 = icmp ne i32 %19, 268
  br i1 %20, label %&quot;OSR exit failCase for @5&quot;, label %&quot;OSR exit continuation for @5&quot;, !prof !3

&quot;OSR exit failCase for @5&quot;:                       ; preds = %&quot;OSR exit continuation for @1&quot;
  call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 4, i32 5, i64 %12)
  unreachable

&quot;OSR exit continuation for @5&quot;:                   ; preds = %&quot;OSR exit continuation for @1&quot;
  %21 = add i64 %12, 7
  %22 = inttoptr i64 %21 to i8*
  %23 = load i8* %22, !tbaa !8
  %24 = icmp ne i8 %23, 0
  br i1 %24, label %&quot;Store barrier continuation&quot;, label %&quot;Store barrier is marked block&quot;, !prof !9

&quot;Store barrier is marked block&quot;:                  ; preds = %&quot;OSR exit continuation for @5&quot;
  %25 = load i32* inttoptr (i64 4334149672 to i32*), !tbaa !10
  %26 = load i32* inttoptr (i64 4334149676 to i32*), !tbaa !12
  %27 = icmp slt i32 %25, %26
  br i1 %27, label %&quot;Store barrier buffer has space&quot;, label %&quot;Store barrier buffer is full&quot;, !prof !9

&quot;Store barrier buffer has space&quot;:                 ; preds = %&quot;Store barrier is marked block&quot;
  %28 = load i64* inttoptr (i64 4334149680 to i64*), !tbaa !13
  %29 = zext i32 %25 to i64
  %30 = shl i64 %29, 3
  %31 = add i64 %28, %30
  %32 = inttoptr i64 %31 to i64*
  store i64 %12, i64* %32, !tbaa !14
  %33 = add i32 %25, 1
  store i32 %33, i32* inttoptr (i64 4334149672 to i32*), !tbaa !10
  br label %&quot;Store barrier continuation&quot;

&quot;Store barrier buffer is full&quot;:                   ; preds = %&quot;Store barrier is marked block&quot;
  %34 = add i64 %4, 44
  %35 = inttoptr i64 %34 to i32*
  store i32 -2147483648, i32* %35, !tbaa !15
  call void inttoptr (i64 4327907200 to void (i64, i64)*)(i64 %4, i64 %12)
  br label %&quot;Store barrier continuation&quot;

&quot;Store barrier continuation&quot;:                     ; preds = %&quot;Store barrier buffer is full&quot;, %&quot;Store barrier buffer has space&quot;, %&quot;OSR exit continuation for @5&quot;
  %36 = inttoptr i64 %12 to i32*
  store i32 349, i32* %36, !tbaa !7
  %37 = add i64 %12, 16
  %38 = inttoptr i64 %37 to i64*
  store i64 %17, i64* %38, !tbaa !16
  ret i64 10
}

declare void @llvm.experimental.stackmap(i64, i32, ...)

; Function Attrs: nounwind readnone
declare i8* @llvm.frameaddress(i32) #1

attributes #0 = { &quot;target-features&quot;=&quot;-avx&quot; }
attributes #1 = { nounwind readnone }

!0 = metadata !{metadata !&quot;variables_2&quot;, metadata !1}
!1 = metadata !{metadata !&quot;variables&quot;, metadata !2}
!2 = metadata !{metadata !&quot;jscRoot&quot;}
!3 = metadata !{metadata !&quot;branch_weights&quot;, i32 0, i32 2147483647}
!4 = metadata !{metadata !&quot;variables_6&quot;, metadata !1}
!5 = metadata !{metadata !&quot;variables_7&quot;, metadata !1}
!6 = metadata !{metadata !&quot;variables_8&quot;, metadata !1}
!7 = metadata !{metadata !&quot;JSCell_structureID&quot;, metadata !2}
!8 = metadata !{metadata !&quot;JSCell_gcData&quot;, metadata !2}
!9 = metadata !{metadata !&quot;branch_weights&quot;, i32 2147483647, i32 0}
!10 = metadata !{metadata !&quot;absolute_10255E028&quot;, metadata !11}
!11 = metadata !{metadata !&quot;absolute&quot;, metadata !2}
!12 = metadata !{metadata !&quot;absolute_10255E02C&quot;, metadata !11}
!13 = metadata !{metadata !&quot;absolute_10255E030&quot;, metadata !11}
!14 = metadata !{metadata !&quot;WriteBarrierBuffer_bufferContents&quot;, metadata !2}
!15 = metadata !{metadata !&quot;variables_5&quot;, metadata !1}
!16 = metadata !{metadata !&quot;properties_0&quot;, metadata !17}
!17 = metadata !{metadata !&quot;properties&quot;, metadata !2}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995878</commentid>
    <comment_count>5</comment_count>
      <attachid>228138</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-31 08:52:37 -0700</bug_when>
    <thetext>Comment on attachment 228138
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995884</commentid>
    <comment_count>6</comment_count>
      <attachid>228138</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-31 09:21:30 -0700</bug_when>
    <thetext>Comment on attachment 228138
the patch

Clearing flags on attachment: 228138

Committed r166505: &lt;http://trac.webkit.org/changeset/166505&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995885</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-31 09:21:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228137</attachid>
            <date>2014-03-30 19:35:40 -0700</date>
            <delta_ts>2014-03-30 19:44:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130950-20140330193520.patch</filename>
            <type>text/plain</type>
            <size>1553</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY2NDY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE0LTAzLTMwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
TExWTSBJUiBmb3Igc3RvcmUgYmFycmllcnMgc2hvdWxkIGJlIG5pY2VseSBhcnJhbmdlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwOTUwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0xMVk0uY3BwOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjplbWl0
U3RvcmVCYXJyaWVyKToKKwogMjAxNC0wMy0yOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgogCiAgICAgICAgIExhbmQgdGhlIHN0YWNrbWFwIHJlZ2lzdGVyIGxpdmVuZXNzIGdsdWUg
d2l0aCB0aGUgdXNlcyBvZiB0aGUgbGl2ZW5lc3MgZGlzYWJsZWQKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxNjY0
NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTYxNiwxMCArNTYxNiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZW1pdFN0b3JlQmFycmllcihMVmFsdWUgYmFzZSkKICAgICB7CiAjaWYgRU5BQkxFKEdHQykKLSAg
ICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJT
dG9yZSBiYXJyaWVyIGNvbnRpbnVhdGlvbiIpKTsKICAgICAgICAgTEJhc2ljQmxvY2sgaXNNYXJr
ZWRBbmROb3RSZW1lbWJlcmVkID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJTdG9yZSBiYXJyaWVy
IGlzIG1hcmtlZCBibG9jayIpKTsKICAgICAgICAgTEJhc2ljQmxvY2sgYnVmZmVySGFzU3BhY2Ug
PSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIlN0b3JlIGJhcnJpZXIgYnVmZmVyIGlzIGZ1bGwiKSk7
CiAgICAgICAgIExCYXNpY0Jsb2NrIGJ1ZmZlcklzRnVsbCA9IEZUTF9ORVdfQkxPQ0sobV9vdXQs
ICgiU3RvcmUgYmFycmllciBidWZmZXIgaXMgZnVsbCIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sg
Y29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJTdG9yZSBiYXJyaWVyIGNvbnRp
bnVhdGlvbiIpKTsKIAogICAgICAgICAvLyBDaGVjayB0aGUgbWFyayBieXRlLiAKICAgICAgICAg
bV9vdXQuYnJhbmNoKAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228138</attachid>
            <date>2014-03-30 19:44:54 -0700</date>
            <delta_ts>2014-03-31 09:21:30 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>2092</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY2NDY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE0LTAzLTMwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
TExWTSBJUiBmb3Igc3RvcmUgYmFycmllcnMgc2hvdWxkIGJlIG5pY2VseSBhcnJhbmdlZCBhbmQg
dGhleSBkb24ndCBuZWVkIGV4Y2VwdGlvbiBjaGVja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDk1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6ZW1pdFN0b3JlQmFycmllcik6CisKIDIw
MTQtMDMtMjggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBMYW5k
IHRoZSBzdGFja21hcCByZWdpc3RlciBsaXZlbmVzcyBnbHVlIHdpdGggdGhlIHVzZXMgb2YgdGhl
IGxpdmVuZXNzIGRpc2FibGVkCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTY2NDY5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2
MTYsMTAgKzU2MTYsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVtaXRTdG9yZUJhcnJpZXIoTFZh
bHVlIGJhc2UpCiAgICAgewogI2lmIEVOQUJMRShHR0MpCi0gICAgICAgIExCYXNpY0Jsb2NrIGNv
bnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiU3RvcmUgYmFycmllciBjb250aW51
YXRpb24iKSk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGlzTWFya2VkQW5kTm90UmVtZW1iZXJlZCA9
IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiU3RvcmUgYmFycmllciBpcyBtYXJrZWQgYmxvY2siKSk7
Ci0gICAgICAgIExCYXNpY0Jsb2NrIGJ1ZmZlckhhc1NwYWNlID0gRlRMX05FV19CTE9DSyhtX291
dCwgKCJTdG9yZSBiYXJyaWVyIGJ1ZmZlciBpcyBmdWxsIikpOworICAgICAgICBMQmFzaWNCbG9j
ayBidWZmZXJIYXNTcGFjZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiU3RvcmUgYmFycmllciBi
dWZmZXIgaGFzIHNwYWNlIikpOwogICAgICAgICBMQmFzaWNCbG9jayBidWZmZXJJc0Z1bGwgPSBG
VExfTkVXX0JMT0NLKG1fb3V0LCAoIlN0b3JlIGJhcnJpZXIgYnVmZmVyIGlzIGZ1bGwiKSk7Cisg
ICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgi
U3RvcmUgYmFycmllciBjb250aW51YXRpb24iKSk7CiAKICAgICAgICAgLy8gQ2hlY2sgdGhlIG1h
cmsgYnl0ZS4gCiAgICAgICAgIG1fb3V0LmJyYW5jaCgKQEAgLTU2NDIsNyArNTY0Miw3IEBAIHBy
aXZhdGU6CiAKICAgICAgICAgLy8gQnVmZmVyIGlzIG91dCBvZiBzcGFjZSwgZmx1c2ggaXQuCiAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGJ1ZmZlcklzRnVsbCwgY29udGludWF0aW9uKTsKLSAgICAg
ICAgdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25GbHVzaFdyaXRlQmFycmllckJ1ZmZl
ciksIG1fY2FsbEZyYW1lLCBiYXNlKTsKKyAgICAgICAgdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25GbHVzaFdyaXRlQmFycmllckJ1ZmZlciksIG1fY2FsbEZyYW1lLCBiYXNlLCBOb0V4
Y2VwdGlvbnMpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>