1 /*
  2  * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
  3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  4  *
  5  * This code is free software; you can redistribute it and/or modify it
  6  * under the terms of the GNU General Public License version 2 only, as
  7  * published by the Free Software Foundation.
  8  *
  9  * This code is distributed in the hope that it will be useful, but WITHOUT
 10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 12  * version 2 for more details (a copy is included in the LICENSE file that
 13  * accompanied this code).
 14  *
 15  * You should have received a copy of the GNU General Public License version
 16  * 2 along with this work; if not, write to the Free Software Foundation,
 17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 18  *
 19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 20  * or visit www.oracle.com if you need additional information or have any
 21  * questions.
 22  */
 23 package org.openjdk.bench.valhalla.arraytotal.copy;
 24 
 25 import org.openjdk.bench.valhalla.arraytotal.util.StatesR64long;
 26 import org.openjdk.bench.valhalla.types.A64long;
 27 import org.openjdk.bench.valhalla.types.Int64;
 28 import org.openjdk.bench.valhalla.types.R64long;
 29 import org.openjdk.jmh.annotations.Benchmark;
 30 import org.openjdk.jmh.annotations.CompilerControl;
 31 
 32 public class IdentityCopy3 extends StatesR64long {
 33 
 34     @Benchmark
 35     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
 36     public void Obj_to_Obj_as_Obj_to_Obj_copy(Obj_as_Obj s, Obj_as_Obj d) {
 37         int len = s.arr.length;
 38         for (int i = 0; i < len; i++) {
 39             d.arr[i] = s.arr[i];
 40         }
 41     }
 42 
 43     @Benchmark
 44     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
 45     public void Obj_to_Int_as_Obj_to_Obj_copy(Obj_as_Obj s, Int_as_Obj d) {
 46         int len = s.arr.length;
 47         for (int i = 0; i < len; i++) {
 48             d.arr[i] = s.arr[i];
 49         }
 50     }
 51 
 52     @Benchmark
 53     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
 54     public void Obj_to_Abs_as_Obj_to_Obj_copy(Obj_as_Obj s, Abs_as_Obj d) {
 55         int len = s.arr.length;
 56         for (int i = 0; i < len; i++) {
 57             d.arr[i] = s.arr[i];
 58         }
 59     }
 60 
 61     @Benchmark
 62     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
 63     public void Obj_to_Ref_as_Obj_to_Obj_copy(Obj_as_Obj s, Ref_as_Obj d) {
 64         int len = s.arr.length;
 65         for (int i = 0; i < len; i++) {
 66             d.arr[i] = s.arr[i];
 67         }
 68     }
 69 
 70     @Benchmark
 71     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
 72     public void Obj_to_Int_as_Obj_to_Int_copy(Obj_as_Obj s, Int_as_Int d) {
 73         int len = s.arr.length;
 74         for (int i = 0; i < len; i++) {
 75             d.arr[i] = (Int64)s.arr[i];
 76         }
 77     }
 78 
 79     @Benchmark
 80     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
 81     public void Obj_to_Abs_as_Obj_to_Int_copy(Obj_as_Obj s, Abs_as_Int d) {
 82         int len = s.arr.length;
 83         for (int i = 0; i < len; i++) {
 84             d.arr[i] = (Int64)s.arr[i];
 85         }
 86     }
 87 
 88     @Benchmark
 89     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
 90     public void Obj_to_Ref_as_Obj_to_Int_copy(Obj_as_Obj s, Ref_as_Int d) {
 91         int len = s.arr.length;
 92         for (int i = 0; i < len; i++) {
 93             d.arr[i] = (Int64)s.arr[i];
 94         }
 95     }
 96 
 97     @Benchmark
 98     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
 99     public void Obj_to_Abs_as_Obj_to_Abs_copy(Obj_as_Obj s, Abs_as_Abs d) {
100         int len = s.arr.length;
101         for (int i = 0; i < len; i++) {
102             d.arr[i] = (A64long)s.arr[i];
103         }
104     }
105 
106     @Benchmark
107     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
108     public void Obj_to_Ref_as_Obj_to_Abs_copy(Obj_as_Obj s, Ref_as_Abs d) {
109         int len = s.arr.length;
110         for (int i = 0; i < len; i++) {
111             d.arr[i] = (A64long)s.arr[i];
112         }
113     }
114 
115     @Benchmark
116     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
117     public void Obj_to_Ref_as_Obj_to_Ref_copy(Obj_as_Obj s, Ref_as_Ref d) {
118         int len = s.arr.length;
119         for (int i = 0; i < len; i++) {
120             d.arr[i] = (R64long)s.arr[i];
121         }
122     }
123 
124     @Benchmark
125     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
126     public void Int_to_Obj_as_Obj_to_Obj_copy(Int_as_Obj s, Obj_as_Obj d) {
127         int len = s.arr.length;
128         for (int i = 0; i < len; i++) {
129             d.arr[i] = s.arr[i];
130         }
131     }
132 
133     @Benchmark
134     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
135     public void Int_to_Int_as_Obj_to_Obj_copy(Int_as_Obj s, Int_as_Obj d) {
136         int len = s.arr.length;
137         for (int i = 0; i < len; i++) {
138             d.arr[i] = s.arr[i];
139         }
140     }
141 
142     @Benchmark
143     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
144     public void Int_to_Abs_as_Obj_to_Obj_copy(Int_as_Obj s, Abs_as_Obj d) {
145         int len = s.arr.length;
146         for (int i = 0; i < len; i++) {
147             d.arr[i] = s.arr[i];
148         }
149     }
150 
151     @Benchmark
152     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
153     public void Int_to_Ref_as_Obj_to_Obj_copy(Int_as_Obj s, Ref_as_Obj d) {
154         int len = s.arr.length;
155         for (int i = 0; i < len; i++) {
156             d.arr[i] = s.arr[i];
157         }
158     }
159 
160     @Benchmark
161     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
162     public void Int_to_Int_as_Obj_to_Int_copy(Int_as_Obj s, Int_as_Int d) {
163         int len = s.arr.length;
164         for (int i = 0; i < len; i++) {
165             d.arr[i] = (Int64)s.arr[i];
166         }
167     }
168 
169     @Benchmark
170     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
171     public void Int_to_Abs_as_Obj_to_Int_copy(Int_as_Obj s, Abs_as_Int d) {
172         int len = s.arr.length;
173         for (int i = 0; i < len; i++) {
174             d.arr[i] = (Int64)s.arr[i];
175         }
176     }
177 
178     @Benchmark
179     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
180     public void Int_to_Ref_as_Obj_to_Int_copy(Int_as_Obj s, Ref_as_Int d) {
181         int len = s.arr.length;
182         for (int i = 0; i < len; i++) {
183             d.arr[i] = (Int64)s.arr[i];
184         }
185     }
186 
187     @Benchmark
188     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
189     public void Int_to_Abs_as_Obj_to_Abs_copy(Int_as_Obj s, Abs_as_Abs d) {
190         int len = s.arr.length;
191         for (int i = 0; i < len; i++) {
192             d.arr[i] = (A64long)s.arr[i];
193         }
194     }
195 
196     @Benchmark
197     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
198     public void Int_to_Ref_as_Obj_to_Abs_copy(Int_as_Obj s, Ref_as_Abs d) {
199         int len = s.arr.length;
200         for (int i = 0; i < len; i++) {
201             d.arr[i] = (A64long)s.arr[i];
202         }
203     }
204 
205     @Benchmark
206     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
207     public void Int_to_Ref_as_Obj_to_Ref_copy(Int_as_Obj s, Ref_as_Ref d) {
208         int len = s.arr.length;
209         for (int i = 0; i < len; i++) {
210             d.arr[i] = (R64long)s.arr[i];
211         }
212     }
213 
214     @Benchmark
215     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
216     public void Abs_to_Obj_as_Obj_to_Obj_copy(Abs_as_Obj s, Obj_as_Obj d) {
217         int len = s.arr.length;
218         for (int i = 0; i < len; i++) {
219             d.arr[i] = s.arr[i];
220         }
221     }
222 
223     @Benchmark
224     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
225     public void Abs_to_Int_as_Obj_to_Obj_copy(Abs_as_Obj s, Int_as_Obj d) {
226         int len = s.arr.length;
227         for (int i = 0; i < len; i++) {
228             d.arr[i] = s.arr[i];
229         }
230     }
231 
232     @Benchmark
233     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
234     public void Abs_to_Abs_as_Obj_to_Obj_copy(Abs_as_Obj s, Abs_as_Obj d) {
235         int len = s.arr.length;
236         for (int i = 0; i < len; i++) {
237             d.arr[i] = s.arr[i];
238         }
239     }
240 
241     @Benchmark
242     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
243     public void Abs_to_Ref_as_Obj_to_Obj_copy(Abs_as_Obj s, Ref_as_Obj d) {
244         int len = s.arr.length;
245         for (int i = 0; i < len; i++) {
246             d.arr[i] = s.arr[i];
247         }
248     }
249 
250     @Benchmark
251     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
252     public void Abs_to_Int_as_Obj_to_Int_copy(Abs_as_Obj s, Int_as_Int d) {
253         int len = s.arr.length;
254         for (int i = 0; i < len; i++) {
255             d.arr[i] = (Int64)s.arr[i];
256         }
257     }
258 
259     @Benchmark
260     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
261     public void Abs_to_Abs_as_Obj_to_Int_copy(Abs_as_Obj s, Abs_as_Int d) {
262         int len = s.arr.length;
263         for (int i = 0; i < len; i++) {
264             d.arr[i] = (Int64)s.arr[i];
265         }
266     }
267 
268     @Benchmark
269     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
270     public void Abs_to_Ref_as_Obj_to_Int_copy(Abs_as_Obj s, Ref_as_Int d) {
271         int len = s.arr.length;
272         for (int i = 0; i < len; i++) {
273             d.arr[i] = (Int64)s.arr[i];
274         }
275     }
276 
277     @Benchmark
278     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
279     public void Abs_to_Abs_as_Obj_to_Abs_copy(Abs_as_Obj s, Abs_as_Abs d) {
280         int len = s.arr.length;
281         for (int i = 0; i < len; i++) {
282             d.arr[i] = (A64long)s.arr[i];
283         }
284     }
285 
286     @Benchmark
287     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
288     public void Abs_to_Ref_as_Obj_to_Abs_copy(Abs_as_Obj s, Ref_as_Abs d) {
289         int len = s.arr.length;
290         for (int i = 0; i < len; i++) {
291             d.arr[i] = (A64long)s.arr[i];
292         }
293     }
294 
295     @Benchmark
296     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
297     public void Abs_to_Ref_as_Obj_to_Ref_copy(Abs_as_Obj s, Ref_as_Ref d) {
298         int len = s.arr.length;
299         for (int i = 0; i < len; i++) {
300             d.arr[i] = (R64long)s.arr[i];
301         }
302     }
303 
304     @Benchmark
305     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
306     public void Ref_to_Obj_as_Obj_to_Obj_copy(Ref_as_Obj s, Obj_as_Obj d) {
307         int len = s.arr.length;
308         for (int i = 0; i < len; i++) {
309             d.arr[i] = s.arr[i];
310         }
311     }
312 
313     @Benchmark
314     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
315     public void Ref_to_Int_as_Obj_to_Obj_copy(Ref_as_Obj s, Int_as_Obj d) {
316         int len = s.arr.length;
317         for (int i = 0; i < len; i++) {
318             d.arr[i] = s.arr[i];
319         }
320     }
321 
322     @Benchmark
323     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
324     public void Ref_to_Abs_as_Obj_to_Obj_copy(Ref_as_Obj s, Abs_as_Obj d) {
325         int len = s.arr.length;
326         for (int i = 0; i < len; i++) {
327             d.arr[i] = s.arr[i];
328         }
329     }
330 
331     @Benchmark
332     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
333     public void Ref_to_Ref_as_Obj_to_Obj_copy(Ref_as_Obj s, Ref_as_Obj d) {
334         int len = s.arr.length;
335         for (int i = 0; i < len; i++) {
336             d.arr[i] = s.arr[i];
337         }
338     }
339 
340     @Benchmark
341     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
342     public void Ref_to_Int_as_Obj_to_Int_copy(Ref_as_Obj s, Int_as_Int d) {
343         int len = s.arr.length;
344         for (int i = 0; i < len; i++) {
345             d.arr[i] = (Int64)s.arr[i];
346         }
347     }
348 
349     @Benchmark
350     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
351     public void Ref_to_Abs_as_Obj_to_Int_copy(Ref_as_Obj s, Abs_as_Int d) {
352         int len = s.arr.length;
353         for (int i = 0; i < len; i++) {
354             d.arr[i] = (Int64)s.arr[i];
355         }
356     }
357 
358     @Benchmark
359     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
360     public void Ref_to_Ref_as_Obj_to_Int_copy(Ref_as_Obj s, Ref_as_Int d) {
361         int len = s.arr.length;
362         for (int i = 0; i < len; i++) {
363             d.arr[i] = (Int64)s.arr[i];
364         }
365     }
366 
367     @Benchmark
368     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
369     public void Ref_to_Abs_as_Obj_to_Abs_copy(Ref_as_Obj s, Abs_as_Abs d) {
370         int len = s.arr.length;
371         for (int i = 0; i < len; i++) {
372             d.arr[i] = (A64long)s.arr[i];
373         }
374     }
375 
376     @Benchmark
377     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
378     public void Ref_to_Ref_as_Obj_to_Abs_copy(Ref_as_Obj s, Ref_as_Abs d) {
379         int len = s.arr.length;
380         for (int i = 0; i < len; i++) {
381             d.arr[i] = (A64long)s.arr[i];
382         }
383     }
384 
385     @Benchmark
386     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
387     public void Ref_to_Ref_as_Obj_to_Ref_copy(Ref_as_Obj s, Ref_as_Ref d) {
388         int len = s.arr.length;
389         for (int i = 0; i < len; i++) {
390             d.arr[i] = (R64long)s.arr[i];
391         }
392     }
393 
394     @Benchmark
395     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
396     public void Int_to_Obj_as_Int_to_Obj_copy(Int_as_Int s, Obj_as_Obj d) {
397         int len = s.arr.length;
398         for (int i = 0; i < len; i++) {
399             d.arr[i] = s.arr[i];
400         }
401     }
402 
403     @Benchmark
404     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
405     public void Int_to_Int_as_Int_to_Obj_copy(Int_as_Int s, Int_as_Obj d) {
406         int len = s.arr.length;
407         for (int i = 0; i < len; i++) {
408             d.arr[i] = s.arr[i];
409         }
410     }
411 
412     @Benchmark
413     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
414     public void Int_to_Abs_as_Int_to_Obj_copy(Int_as_Int s, Abs_as_Obj d) {
415         int len = s.arr.length;
416         for (int i = 0; i < len; i++) {
417             d.arr[i] = s.arr[i];
418         }
419     }
420 
421     @Benchmark
422     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
423     public void Int_to_Ref_as_Int_to_Obj_copy(Int_as_Int s, Ref_as_Obj d) {
424         int len = s.arr.length;
425         for (int i = 0; i < len; i++) {
426             d.arr[i] = s.arr[i];
427         }
428     }
429 
430     @Benchmark
431     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
432     public void Int_to_Int_as_Int_to_Int_copy(Int_as_Int s, Int_as_Int d) {
433         int len = s.arr.length;
434         for (int i = 0; i < len; i++) {
435             d.arr[i] = s.arr[i];
436         }
437     }
438 
439     @Benchmark
440     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
441     public void Int_to_Abs_as_Int_to_Int_copy(Int_as_Int s, Abs_as_Int d) {
442         int len = s.arr.length;
443         for (int i = 0; i < len; i++) {
444             d.arr[i] = s.arr[i];
445         }
446     }
447 
448     @Benchmark
449     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
450     public void Int_to_Ref_as_Int_to_Int_copy(Int_as_Int s, Ref_as_Int d) {
451         int len = s.arr.length;
452         for (int i = 0; i < len; i++) {
453             d.arr[i] = s.arr[i];
454         }
455     }
456 
457     @Benchmark
458     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
459     public void Int_to_Abs_as_Int_to_Abs_copy(Int_as_Int s, Abs_as_Abs d) {
460         int len = s.arr.length;
461         for (int i = 0; i < len; i++) {
462             d.arr[i] = (A64long)s.arr[i];
463         }
464     }
465 
466     @Benchmark
467     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
468     public void Int_to_Ref_as_Int_to_Abs_copy(Int_as_Int s, Ref_as_Abs d) {
469         int len = s.arr.length;
470         for (int i = 0; i < len; i++) {
471             d.arr[i] = (A64long)s.arr[i];
472         }
473     }
474 
475     @Benchmark
476     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
477     public void Int_to_Ref_as_Int_to_Ref_copy(Int_as_Int s, Ref_as_Ref d) {
478         int len = s.arr.length;
479         for (int i = 0; i < len; i++) {
480             d.arr[i] = (R64long)s.arr[i];
481         }
482     }
483 
484     @Benchmark
485     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
486     public void Abs_to_Obj_as_Int_to_Obj_copy(Abs_as_Int s, Obj_as_Obj d) {
487         int len = s.arr.length;
488         for (int i = 0; i < len; i++) {
489             d.arr[i] = s.arr[i];
490         }
491     }
492 
493     @Benchmark
494     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
495     public void Abs_to_Int_as_Int_to_Obj_copy(Abs_as_Int s, Int_as_Obj d) {
496         int len = s.arr.length;
497         for (int i = 0; i < len; i++) {
498             d.arr[i] = s.arr[i];
499         }
500     }
501 
502     @Benchmark
503     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
504     public void Abs_to_Abs_as_Int_to_Obj_copy(Abs_as_Int s, Abs_as_Obj d) {
505         int len = s.arr.length;
506         for (int i = 0; i < len; i++) {
507             d.arr[i] = s.arr[i];
508         }
509     }
510 
511     @Benchmark
512     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
513     public void Abs_to_Ref_as_Int_to_Obj_copy(Abs_as_Int s, Ref_as_Obj d) {
514         int len = s.arr.length;
515         for (int i = 0; i < len; i++) {
516             d.arr[i] = s.arr[i];
517         }
518     }
519 
520     @Benchmark
521     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
522     public void Abs_to_Int_as_Int_to_Int_copy(Abs_as_Int s, Int_as_Int d) {
523         int len = s.arr.length;
524         for (int i = 0; i < len; i++) {
525             d.arr[i] = s.arr[i];
526         }
527     }
528 
529     @Benchmark
530     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
531     public void Abs_to_Abs_as_Int_to_Int_copy(Abs_as_Int s, Abs_as_Int d) {
532         int len = s.arr.length;
533         for (int i = 0; i < len; i++) {
534             d.arr[i] = s.arr[i];
535         }
536     }
537 
538     @Benchmark
539     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
540     public void Abs_to_Ref_as_Int_to_Int_copy(Abs_as_Int s, Ref_as_Int d) {
541         int len = s.arr.length;
542         for (int i = 0; i < len; i++) {
543             d.arr[i] = s.arr[i];
544         }
545     }
546 
547     @Benchmark
548     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
549     public void Abs_to_Abs_as_Int_to_Abs_copy(Abs_as_Int s, Abs_as_Abs d) {
550         int len = s.arr.length;
551         for (int i = 0; i < len; i++) {
552             d.arr[i] = (A64long)s.arr[i];
553         }
554     }
555 
556     @Benchmark
557     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
558     public void Abs_to_Ref_as_Int_to_Abs_copy(Abs_as_Int s, Ref_as_Abs d) {
559         int len = s.arr.length;
560         for (int i = 0; i < len; i++) {
561             d.arr[i] = (A64long)s.arr[i];
562         }
563     }
564 
565     @Benchmark
566     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
567     public void Abs_to_Ref_as_Int_to_Ref_copy(Abs_as_Int s, Ref_as_Ref d) {
568         int len = s.arr.length;
569         for (int i = 0; i < len; i++) {
570             d.arr[i] = (R64long)s.arr[i];
571         }
572     }
573 
574     @Benchmark
575     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
576     public void Ref_to_Obj_as_Int_to_Obj_copy(Ref_as_Int s, Obj_as_Obj d) {
577         int len = s.arr.length;
578         for (int i = 0; i < len; i++) {
579             d.arr[i] = s.arr[i];
580         }
581     }
582 
583     @Benchmark
584     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
585     public void Ref_to_Int_as_Int_to_Obj_copy(Ref_as_Int s, Int_as_Obj d) {
586         int len = s.arr.length;
587         for (int i = 0; i < len; i++) {
588             d.arr[i] = s.arr[i];
589         }
590     }
591 
592     @Benchmark
593     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
594     public void Ref_to_Abs_as_Int_to_Obj_copy(Ref_as_Int s, Abs_as_Obj d) {
595         int len = s.arr.length;
596         for (int i = 0; i < len; i++) {
597             d.arr[i] = s.arr[i];
598         }
599     }
600 
601     @Benchmark
602     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
603     public void Ref_to_Ref_as_Int_to_Obj_copy(Ref_as_Int s, Ref_as_Obj d) {
604         int len = s.arr.length;
605         for (int i = 0; i < len; i++) {
606             d.arr[i] = s.arr[i];
607         }
608     }
609 
610     @Benchmark
611     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
612     public void Ref_to_Int_as_Int_to_Int_copy(Ref_as_Int s, Int_as_Int d) {
613         int len = s.arr.length;
614         for (int i = 0; i < len; i++) {
615             d.arr[i] = s.arr[i];
616         }
617     }
618 
619     @Benchmark
620     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
621     public void Ref_to_Abs_as_Int_to_Int_copy(Ref_as_Int s, Abs_as_Int d) {
622         int len = s.arr.length;
623         for (int i = 0; i < len; i++) {
624             d.arr[i] = s.arr[i];
625         }
626     }
627 
628     @Benchmark
629     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
630     public void Ref_to_Ref_as_Int_to_Int_copy(Ref_as_Int s, Ref_as_Int d) {
631         int len = s.arr.length;
632         for (int i = 0; i < len; i++) {
633             d.arr[i] = s.arr[i];
634         }
635     }
636 
637     @Benchmark
638     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
639     public void Ref_to_Abs_as_Int_to_Abs_copy(Ref_as_Int s, Abs_as_Abs d) {
640         int len = s.arr.length;
641         for (int i = 0; i < len; i++) {
642             d.arr[i] = (A64long)s.arr[i];
643         }
644     }
645 
646     @Benchmark
647     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
648     public void Ref_to_Ref_as_Int_to_Abs_copy(Ref_as_Int s, Ref_as_Abs d) {
649         int len = s.arr.length;
650         for (int i = 0; i < len; i++) {
651             d.arr[i] = (A64long)s.arr[i];
652         }
653     }
654 
655     @Benchmark
656     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
657     public void Ref_to_Ref_as_Int_to_Ref_copy(Ref_as_Int s, Ref_as_Ref d) {
658         int len = s.arr.length;
659         for (int i = 0; i < len; i++) {
660             d.arr[i] = (R64long)s.arr[i];
661         }
662     }
663 
664     @Benchmark
665     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
666     public void Abs_to_Obj_as_Abs_to_Obj_copy(Abs_as_Abs s, Obj_as_Obj d) {
667         int len = s.arr.length;
668         for (int i = 0; i < len; i++) {
669             d.arr[i] = s.arr[i];
670         }
671     }
672 
673     @Benchmark
674     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
675     public void Abs_to_Int_as_Abs_to_Obj_copy(Abs_as_Abs s, Int_as_Obj d) {
676         int len = s.arr.length;
677         for (int i = 0; i < len; i++) {
678             d.arr[i] = s.arr[i];
679         }
680     }
681 
682     @Benchmark
683     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
684     public void Abs_to_Abs_as_Abs_to_Obj_copy(Abs_as_Abs s, Abs_as_Obj d) {
685         int len = s.arr.length;
686         for (int i = 0; i < len; i++) {
687             d.arr[i] = s.arr[i];
688         }
689     }
690 
691     @Benchmark
692     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
693     public void Abs_to_Ref_as_Abs_to_Obj_copy(Abs_as_Abs s, Ref_as_Obj d) {
694         int len = s.arr.length;
695         for (int i = 0; i < len; i++) {
696             d.arr[i] = s.arr[i];
697         }
698     }
699 
700     @Benchmark
701     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
702     public void Abs_to_Int_as_Abs_to_Int_copy(Abs_as_Abs s, Int_as_Int d) {
703         int len = s.arr.length;
704         for (int i = 0; i < len; i++) {
705             d.arr[i] = s.arr[i];
706         }
707     }
708 
709     @Benchmark
710     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
711     public void Abs_to_Abs_as_Abs_to_Int_copy(Abs_as_Abs s, Abs_as_Int d) {
712         int len = s.arr.length;
713         for (int i = 0; i < len; i++) {
714             d.arr[i] = s.arr[i];
715         }
716     }
717 
718     @Benchmark
719     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
720     public void Abs_to_Ref_as_Abs_to_Int_copy(Abs_as_Abs s, Ref_as_Int d) {
721         int len = s.arr.length;
722         for (int i = 0; i < len; i++) {
723             d.arr[i] = s.arr[i];
724         }
725     }
726 
727     @Benchmark
728     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
729     public void Abs_to_Abs_as_Abs_to_Abs_copy(Abs_as_Abs s, Abs_as_Abs d) {
730         int len = s.arr.length;
731         for (int i = 0; i < len; i++) {
732             d.arr[i] = s.arr[i];
733         }
734     }
735 
736     @Benchmark
737     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
738     public void Abs_to_Ref_as_Abs_to_Abs_copy(Abs_as_Abs s, Ref_as_Abs d) {
739         int len = s.arr.length;
740         for (int i = 0; i < len; i++) {
741             d.arr[i] = s.arr[i];
742         }
743     }
744 
745     @Benchmark
746     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
747     public void Abs_to_Ref_as_Abs_to_Ref_copy(Abs_as_Abs s, Ref_as_Ref d) {
748         int len = s.arr.length;
749         for (int i = 0; i < len; i++) {
750             d.arr[i] = (R64long)s.arr[i];
751         }
752     }
753 
754     @Benchmark
755     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
756     public void Ref_to_Obj_as_Abs_to_Obj_copy(Ref_as_Abs s, Obj_as_Obj d) {
757         int len = s.arr.length;
758         for (int i = 0; i < len; i++) {
759             d.arr[i] = s.arr[i];
760         }
761     }
762 
763     @Benchmark
764     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
765     public void Ref_to_Int_as_Abs_to_Obj_copy(Ref_as_Abs s, Int_as_Obj d) {
766         int len = s.arr.length;
767         for (int i = 0; i < len; i++) {
768             d.arr[i] = s.arr[i];
769         }
770     }
771 
772     @Benchmark
773     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
774     public void Ref_to_Abs_as_Abs_to_Obj_copy(Ref_as_Abs s, Abs_as_Obj d) {
775         int len = s.arr.length;
776         for (int i = 0; i < len; i++) {
777             d.arr[i] = s.arr[i];
778         }
779     }
780 
781     @Benchmark
782     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
783     public void Ref_to_Ref_as_Abs_to_Obj_copy(Ref_as_Abs s, Ref_as_Obj d) {
784         int len = s.arr.length;
785         for (int i = 0; i < len; i++) {
786             d.arr[i] = s.arr[i];
787         }
788     }
789 
790     @Benchmark
791     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
792     public void Ref_to_Int_as_Abs_to_Int_copy(Ref_as_Abs s, Int_as_Int d) {
793         int len = s.arr.length;
794         for (int i = 0; i < len; i++) {
795             d.arr[i] = s.arr[i];
796         }
797     }
798 
799     @Benchmark
800     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
801     public void Ref_to_Abs_as_Abs_to_Int_copy(Ref_as_Abs s, Abs_as_Int d) {
802         int len = s.arr.length;
803         for (int i = 0; i < len; i++) {
804             d.arr[i] = s.arr[i];
805         }
806     }
807 
808     @Benchmark
809     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
810     public void Ref_to_Ref_as_Abs_to_Int_copy(Ref_as_Abs s, Ref_as_Int d) {
811         int len = s.arr.length;
812         for (int i = 0; i < len; i++) {
813             d.arr[i] = s.arr[i];
814         }
815     }
816 
817     @Benchmark
818     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
819     public void Ref_to_Abs_as_Abs_to_Abs_copy(Ref_as_Abs s, Abs_as_Abs d) {
820         int len = s.arr.length;
821         for (int i = 0; i < len; i++) {
822             d.arr[i] = s.arr[i];
823         }
824     }
825 
826     @Benchmark
827     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
828     public void Ref_to_Ref_as_Abs_to_Abs_copy(Ref_as_Abs s, Ref_as_Abs d) {
829         int len = s.arr.length;
830         for (int i = 0; i < len; i++) {
831             d.arr[i] = s.arr[i];
832         }
833     }
834 
835     @Benchmark
836     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
837     public void Ref_to_Ref_as_Abs_to_Ref_copy(Ref_as_Abs s, Ref_as_Ref d) {
838         int len = s.arr.length;
839         for (int i = 0; i < len; i++) {
840             d.arr[i] = (R64long)s.arr[i];
841         }
842     }
843 
844     @Benchmark
845     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
846     public void Ref_to_Obj_as_Ref_to_Obj_copy(Ref_as_Ref s, Obj_as_Obj d) {
847         int len = s.arr.length;
848         for (int i = 0; i < len; i++) {
849             d.arr[i] = s.arr[i];
850         }
851     }
852 
853     @Benchmark
854     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
855     public void Ref_to_Int_as_Ref_to_Obj_copy(Ref_as_Ref s, Int_as_Obj d) {
856         int len = s.arr.length;
857         for (int i = 0; i < len; i++) {
858             d.arr[i] = s.arr[i];
859         }
860     }
861 
862     @Benchmark
863     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
864     public void Ref_to_Abs_as_Ref_to_Obj_copy(Ref_as_Ref s, Abs_as_Obj d) {
865         int len = s.arr.length;
866         for (int i = 0; i < len; i++) {
867             d.arr[i] = s.arr[i];
868         }
869     }
870 
871     @Benchmark
872     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
873     public void Ref_to_Ref_as_Ref_to_Obj_copy(Ref_as_Ref s, Ref_as_Obj d) {
874         int len = s.arr.length;
875         for (int i = 0; i < len; i++) {
876             d.arr[i] = s.arr[i];
877         }
878     }
879 
880     @Benchmark
881     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
882     public void Ref_to_Int_as_Ref_to_Int_copy(Ref_as_Ref s, Int_as_Int d) {
883         int len = s.arr.length;
884         for (int i = 0; i < len; i++) {
885             d.arr[i] = s.arr[i];
886         }
887     }
888 
889     @Benchmark
890     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
891     public void Ref_to_Abs_as_Ref_to_Int_copy(Ref_as_Ref s, Abs_as_Int d) {
892         int len = s.arr.length;
893         for (int i = 0; i < len; i++) {
894             d.arr[i] = s.arr[i];
895         }
896     }
897 
898     @Benchmark
899     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
900     public void Ref_to_Ref_as_Ref_to_Int_copy(Ref_as_Ref s, Ref_as_Int d) {
901         int len = s.arr.length;
902         for (int i = 0; i < len; i++) {
903             d.arr[i] = s.arr[i];
904         }
905     }
906 
907     @Benchmark
908     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
909     public void Ref_to_Abs_as_Ref_to_Abs_copy(Ref_as_Ref s, Abs_as_Abs d) {
910         int len = s.arr.length;
911         for (int i = 0; i < len; i++) {
912             d.arr[i] = s.arr[i];
913         }
914     }
915 
916     @Benchmark
917     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
918     public void Ref_to_Ref_as_Ref_to_Abs_copy(Ref_as_Ref s, Ref_as_Abs d) {
919         int len = s.arr.length;
920         for (int i = 0; i < len; i++) {
921             d.arr[i] = s.arr[i];
922         }
923     }
924 
925     @Benchmark
926     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
927     public void Ref_to_Ref_as_Ref_to_Ref_copy(Ref_as_Ref s, Ref_as_Ref d) {
928         int len = s.arr.length;
929         for (int i = 0; i < len; i++) {
930             d.arr[i] = s.arr[i];
931         }
932     }
933 
934 }