@@ -32,16 +32,16 @@ LEAF_ENTRY JIT_CheckedWriteBarrier, _TEXT
3232        // See if this is  in  GCHeap 
3333        PREPARE_EXTERNAL_VAR g_lowest_address ,   rax 
3434         cmp       rdi ,   [ rax ] 
35-         //  jb       NotInHeap 
35+         //  jb       LOCAL_LABEL( NotInHeap)  
3636        . byte   0x72 ,   0x12 
3737        PREPARE_EXTERNAL_VAR g_highest_address ,   rax 
3838         cmp       rdi ,   [ rax ] 
3939
40-         //  jnb      NotInHeap 
40+         //  jnb      LOCAL_LABEL( NotInHeap)  
4141        . byte   0x73 ,   0x06 
4242         jmp       [ rip   +  C_FUNC(JIT_WriteBarrier_Loc) ] 
4343
44-     NotInHeap: 
44+     LOCAL_LABEL( NotInHeap) : 
4545        // See comment above about possible AV 
4646         mov       [ rdi ],   rsi 
4747         ret 
@@ -85,24 +85,24 @@ LEAF_ENTRY JIT_WriteBarrier, _TEXT
8585         add       rax ,   r10 
8686         cmp      byte ptr  [ rax ],   0x0 
8787        . byte   0x75 ,   0x06 
88-         //  jne      CheckCardTable 
88+         //  jne      LOCAL_LABEL( CheckCardTable)  
8989         mov      byte ptr  [ rax ],   0xFF 
9090
9191        NOP_3_BYTE // padding for alignment of constant 
9292
9393        // Check the lower  and  upper ephemeral region bounds 
94-     CheckCardTable: 
94+     LOCAL_LABEL( CheckCardTable) : 
9595         cmp       rsi ,   r11 
9696        . byte   0x72 , 0x3D 
97-         //  jb       Exit 
97+         //  jb       LOCAL_LABEL( Exit)  
9898
9999        NOP_3_BYTE // padding for alignment of constant 
100100
101101        movabs   r10 ,   0xF0F0F0F0F0F0F0F0 
102102
103103         cmp       rsi ,   r10 
104104        . byte   0x73 , 0x2B 
105-         //  jae      Exit 
105+         //  jae      LOCAL_LABEL( Exit)  
106106
107107         nop  // padding for alignment of constant 
108108
@@ -112,10 +112,10 @@ LEAF_ENTRY JIT_WriteBarrier, _TEXT
112112         shr       rdi ,   0x0B 
113113         cmp      byte ptr  [ rdi   +   rax ],   0xFF 
114114        . byte   0x75 ,   0x02 
115-         //  jne      UpdateCardTable 
115+         //  jne      LOCAL_LABEL( UpdateCardTable)  
116116        REPRET 
117117
118-     UpdateCardTable: 
118+     LOCAL_LABEL( UpdateCardTable) : 
119119         mov      byte ptr  [ rdi   +   rax ],   0xFF 
120120
121121#ifdef FEATURE_MANUALLY_MANAGED_CARD_BUNDLES 
@@ -126,17 +126,17 @@ LEAF_ENTRY JIT_WriteBarrier, _TEXT
126126         cmp      byte ptr  [ rdi   +   rax ],   0xFF 
127127
128128        . byte   0x75 ,   0x02 
129-         //  jne      UpdateCardBundle_WriteWatch_PostGrow64 
129+         //  jne      LOCAL_LABEL( UpdateCardBundle_WriteWatch_PostGrow64)  
130130        REPRET 
131131
132-     UpdateCardBundle_WriteWatch_PostGrow64: 
132+     LOCAL_LABEL( UpdateCardBundle_WriteWatch_PostGrow64) : 
133133         mov      byte ptr  [ rdi   +   rax ],   0xFF 
134134#endif 
135135
136136         ret 
137137
138138    .balign  16 
139-     Exit: 
139+     LOCAL_LABEL( Exit) : 
140140        REPRET 
141141
142142        NOP_3_BYTE 
@@ -184,15 +184,15 @@ LEAF_ENTRY JIT_WriteBarrier, _TEXT
184184
185185        // Check the lower  and  upper ephemeral region bounds 
186186         cmp       rsi ,   rax 
187-         //  jb       Exit 
187+         //  jb       LOCAL_LABEL( Exit)  
188188        . byte   0x72 ,   0x36 
189189
190190         nop  // padding for alignment of constant 
191191
192192        movabs   r8 ,   0xF0F0F0F0F0F0F0F0 
193193
194194         cmp       rsi ,   r8 
195-         //  jae      Exit 
195+         //  jae      LOCAL_LABEL( Exit)  
196196        . byte   0x73 ,   0x26 
197197
198198         nop  // padding for alignment of constant 
@@ -203,10 +203,10 @@ LEAF_ENTRY JIT_WriteBarrier, _TEXT
203203         shr       rdi ,   0Bh 
204204         cmp      byte ptr  [ rdi   +   rax ],   0FFh 
205205        . byte   0x75 ,   0x02 
206-         //  jne      UpdateCardTable 
206+         //  jne      LOCAL_LABEL( UpdateCardTable)  
207207        REPRET 
208208
209-     UpdateCardTable: 
209+     LOCAL_LABEL( UpdateCardTable) : 
210210         mov      byte ptr  [ rdi   +   rax ],   0FFh 
211211
212212#ifdef FEATURE_MANUALLY_MANAGED_CARD_BUNDLES 
@@ -220,17 +220,17 @@ LEAF_ENTRY JIT_WriteBarrier, _TEXT
220220         cmp      byte ptr  [ rdi   +   rax ],   0FFh 
221221
222222        . byte   0x75 ,   0x02 
223-         //  jne      UpdateCardBundle 
223+         //  jne      LOCAL_LABEL( UpdateCardBundle)  
224224        REPRET 
225225
226-     UpdateCardBundle: 
226+     LOCAL_LABEL( UpdateCardBundle) : 
227227         mov      byte ptr  [ rdi   +   rax ],   0FFh 
228228#endif 
229229
230230         ret 
231231
232232    .balign  16 
233-     Exit: 
233+     LOCAL_LABEL( Exit) : 
234234        REPRET 
235235#endif 
236236
@@ -277,30 +277,30 @@ LEAF_ENTRY JIT_ByRefWriteBarrier, _TEXT
277277        // See if this is  in  GCHeap 
278278        PREPARE_EXTERNAL_VAR g_lowest_address ,   rax 
279279         cmp       rdi ,   [ rax ] 
280-          jb       NotInHeap_ByRefWriteBarrier 
280+          jb       LOCAL_LABEL( NotInHeap_ByRefWriteBarrier)  
281281        PREPARE_EXTERNAL_VAR g_highest_address ,   rax 
282282         cmp       rdi ,   [ rax ] 
283-          jnb      NotInHeap_ByRefWriteBarrier 
283+          jnb      LOCAL_LABEL( NotInHeap_ByRefWriteBarrier)  
284284
285285#ifdef WRITE_BARRIER_CHECK 
286286        //  ** ALSO update the shadow GC heap if th at  is enabled ** 
287287        //  Do   not  perform the work if g_GCShadow is  0 
288288        PREPARE_EXTERNAL_VAR g_GCShadow ,   rax 
289289         cmp      qword ptr  [ rax ],   0 
290-          je       NoShadow_ByRefWriteBarrier 
290+          je       LOCAL_LABEL( NoShadow_ByRefWriteBarrier)  
291291
292292        // If we end up outside of the heap don't corrupt random memory 
293293         mov       r10 ,   rdi 
294294        PREPARE_EXTERNAL_VAR g_lowest_address ,   rax 
295295         sub       r10 ,   [ rax ] 
296-          jb       NoShadow_ByRefWriteBarrier 
296+          jb       LOCAL_LABEL( NoShadow_ByRefWriteBarrier)  
297297
298298        // Check th at  our adjusted destination is somewhere  in  the shadow gc 
299299        PREPARE_EXTERNAL_VAR g_GCShadow ,   rax 
300300         add       r10 ,   [ rax ] 
301301        PREPARE_EXTERNAL_VAR g_GCShadowEnd ,   rax 
302302         cmp       r10 ,   [ rax ] 
303-          jnb      NoShadow_ByRefWriteBarrier 
303+          jnb      LOCAL_LABEL( NoShadow_ByRefWriteBarrier)  
304304
305305        // Write ref  into  real GC 
306306         mov       [ rdi ],   rcx 
@@ -315,73 +315,73 @@ LEAF_ENTRY JIT_ByRefWriteBarrier, _TEXT
315315         mov       r11 ,   [ rdi ] 
316316         mov       rax ,   [ r10 ] 
317317         cmp       rax ,   r11 
318-          je       DoneShadow_ByRefWriteBarrier 
318+          je       LOCAL_LABEL( DoneShadow_ByRefWriteBarrier)  
319319        movabs   r11 ,  INVALIDGCVALUE 
320320         mov       [ r10 ],   r11 
321321
322-          jmp      DoneShadow_ByRefWriteBarrier 
322+          jmp      LOCAL_LABEL( DoneShadow_ByRefWriteBarrier)  
323323
324324    // If we don 't have a shadow GC we won' t have done the write yet 
325-     NoShadow_ByRefWriteBarrier: 
325+     LOCAL_LABEL( NoShadow_ByRefWriteBarrier) : 
326326         mov       [ rdi ],   rcx 
327327
328328    // If we had a shadow GC then we already wrote to the real GC  at  the same time 
329329    // as the shadow GC so we want to jump over the real write immediately above. 
330330    // Additionally we know for sure th at  we are inside the heap  and  therefore don't 
331331    // need to replicate the above checks. 
332-     DoneShadow_ByRefWriteBarrier: 
332+     LOCAL_LABEL( DoneShadow_ByRefWriteBarrier) : 
333333#endif 
334334
335335#ifdef FEATURE_USE_SOFTWARE_WRITE_WATCH_FOR_GC_HEAP 
336336        // Update the write watch table if necessary 
337337        PREPARE_EXTERNAL_VAR g_sw_ww_enabled_for_gc_heap ,   rax 
338338         cmp      byte ptr  [ rax ],   0x0 
339-          je       CheckCardTable_ByRefWriteBarrier 
339+          je       LOCAL_LABEL( CheckCardTable_ByRefWriteBarrier)  
340340         mov       rax ,   rdi 
341341         shr       rax ,   0xC  // SoftwareWriteWatch::AddressToTableByteIndexShift 
342342        PREPARE_EXTERNAL_VAR g_sw_ww_table ,   r10 
343343         add       rax ,  qword ptr  [ r10 ] 
344344         cmp      byte ptr  [ rax ],   0x0 
345-          jne      CheckCardTable_ByRefWriteBarrier 
345+          jne      LOCAL_LABEL( CheckCardTable_ByRefWriteBarrier)  
346346         mov      byte ptr  [ rax ],   0xFF 
347347#endif 
348348
349-     CheckCardTable_ByRefWriteBarrier: 
349+     LOCAL_LABEL( CheckCardTable_ByRefWriteBarrier) : 
350350        // See if we can just quick  out 
351351        PREPARE_EXTERNAL_VAR g_ephemeral_low ,   rax 
352352         cmp       rcx ,   [ rax ] 
353-          jb       Exit_ByRefWriteBarrier 
353+          jb       LOCAL_LABEL( Exit_ByRefWriteBarrier)  
354354        PREPARE_EXTERNAL_VAR g_ephemeral_high ,   rax 
355355         cmp       rcx ,   [ rax ] 
356-          jnb      Exit_ByRefWriteBarrier 
356+          jnb      LOCAL_LABEL( Exit_ByRefWriteBarrier)  
357357
358358         mov       rax ,   rcx 
359359
360360        PREPARE_EXTERNAL_VAR g_region_shr ,   rcx 
361361         mov       cl ,   [ rcx ] 
362362         test      cl ,   cl 
363-          je       SkipCheck_ByRefWriteBarrier 
363+          je       LOCAL_LABEL( SkipCheck_ByRefWriteBarrier)  
364364
365365        // check if the source is  in  gen  2   -  then it's  not  an ephemeral pointer 
366366         shr       rax ,   cl 
367367        PREPARE_EXTERNAL_VAR g_region_to_generation_table ,   r10 
368368         mov       r10 ,   [ r10 ] 
369369         cmp      byte ptr  [ rax   +   r10 ],   0x82 
370-          je       Exit_ByRefWriteBarrier 
370+          je       LOCAL_LABEL( Exit_ByRefWriteBarrier)  
371371
372372        // check if the destination happens to be  in  gen  0 
373373         mov       rax ,   rdi 
374374         shr       rax ,   cl 
375375         cmp      byte ptr  [ rax   +   r10 ],   0 
376-          je       Exit_ByRefWriteBarrier 
377-     SkipCheck_ByRefWriteBarrier: 
376+          je       LOCAL_LABEL( Exit_ByRefWriteBarrier)  
377+     LOCAL_LABEL( SkipCheck_ByRefWriteBarrier) : 
378378
379379        PREPARE_EXTERNAL_VAR g_card_table ,   r10 
380380         mov       r10 ,   [ r10 ] 
381381
382382        PREPARE_EXTERNAL_VAR g_region_use_bitwise_write_barrier ,   rax 
383383         cmp      byte ptr  [ rax ],   0 
384-          je       CheckCardTableByte_ByRefWriteBarrier 
384+          je       LOCAL_LABEL( CheckCardTableByte_ByRefWriteBarrier)  
385385
386386        // compute card table bit 
387387         mov       ecx ,   edi 
@@ -400,28 +400,28 @@ LEAF_ENTRY JIT_ByRefWriteBarrier, _TEXT
400400         shr       rcx ,   0xB 
401401        // Check if this card table bit is already set 
402402         test     byte ptr  [ rcx   +   r10 ],   al 
403-          je       SetCardTableBit_ByRefWriteBarrier 
403+          je       LOCAL_LABEL( SetCardTableBit_ByRefWriteBarrier)  
404404        REPRET 
405405
406-     SetCardTableBit_ByRefWriteBarrier: 
406+     LOCAL_LABEL( SetCardTableBit_ByRefWriteBarrier) : 
407407         lock   or  byte ptr  [ rcx   +   r10 ],   al 
408408
409-          jmp      CheckCardBundle_ByRefWriteBarrier 
409+          jmp      LOCAL_LABEL( CheckCardBundle_ByRefWriteBarrier)  
410410
411-     CheckCardTableByte_ByRefWriteBarrier: 
411+     LOCAL_LABEL( CheckCardTableByte_ByRefWriteBarrier) : 
412412        // move current  rdi  value  into   rcx   and  then increment the pointers 
413413         mov       rcx ,   rdi 
414414         add       rsi ,   0x8 
415415         add       rdi ,   0x8 
416416
417417         shr       rcx ,   0xB 
418418         cmp      byte ptr  [ rcx   +   r10 ],   0xFF 
419-          jne      SetCardTableByte_ByRefWriteBarrier 
419+          jne      LOCAL_LABEL( SetCardTableByte_ByRefWriteBarrier)  
420420        REPRET 
421-     SetCardTableByte_ByRefWriteBarrier: 
421+     LOCAL_LABEL( SetCardTableByte_ByRefWriteBarrier) : 
422422         mov      byte ptr  [ rcx   +   r10 ],   0xFF 
423423
424-     CheckCardBundle_ByRefWriteBarrier: 
424+     LOCAL_LABEL( CheckCardBundle_ByRefWriteBarrier) : 
425425
426426#ifdef FEATURE_MANUALLY_MANAGED_CARD_BUNDLES 
427427        // Shift  rcx  by  0x0A  more to get the card bundle byte (we shifted by  0x0B  already) 
@@ -433,25 +433,25 @@ LEAF_ENTRY JIT_ByRefWriteBarrier, _TEXT
433433        // Check if this bundle byte is dirty 
434434         cmp      byte ptr  [ rcx ],   0xFF 
435435
436-          jne      UpdateCardBundle_ByRefWriteBarrier 
436+          jne      LOCAL_LABEL( UpdateCardBundle_ByRefWriteBarrier)  
437437        REPRET 
438438
439-     UpdateCardBundle_ByRefWriteBarrier: 
439+     LOCAL_LABEL( UpdateCardBundle_ByRefWriteBarrier) : 
440440         mov      byte ptr  [ rcx ],   0xFF 
441441#endif 
442442
443443         ret 
444444
445445    .balign  16 
446-     NotInHeap_ByRefWriteBarrier: 
446+     LOCAL_LABEL( NotInHeap_ByRefWriteBarrier) : 
447447// If WRITE_BARRIER_CHECK then we won't have already done the  mov   and  should do it here 
448448// If !WRITE_BARRIER_CHECK we want _NotInHeap  and  _Leave to be the same  and  have both 
449449//  16  byte aligned. 
450450#ifdef WRITE_BARRIER_CHECK 
451451        //  rcx  is  [ rsi ] 
452452         mov       [ rdi ],   rcx 
453453#endif 
454-     Exit_ByRefWriteBarrier: 
454+     LOCAL_LABEL( Exit_ByRefWriteBarrier) : 
455455        // Increment the pointers before leaving 
456456         add       rdi ,   0x8 
457457         add       rsi ,   0x8 
0 commit comments