1 /*
  2  * Copyright (c) 2020, 2024, 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.StatesQ64long;
 26 import org.openjdk.bench.valhalla.types.Int64;
 27 import org.openjdk.bench.valhalla.types.Q64long;
 28 import org.openjdk.jmh.annotations.Benchmark;
 29 import org.openjdk.jmh.annotations.CompilerControl;
 30 
 31 public class InlineCopy1 extends StatesQ64long {
 32 
 33     @Benchmark
 34     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
 35     public void Obj_to_Obj_as_Obj_to_Obj_copy(Obj_as_Obj s, Obj_as_Obj d) {
 36         Object[] src = s.arr;
 37         for (int i = 0; i < src.length; i++) {
 38             d.arr[i] = src[i];
 39         }
 40     }
 41 
 42     @Benchmark
 43     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
 44     public void Obj_to_Int_as_Obj_to_Obj_copy(Obj_as_Obj s, Int_as_Obj d) {
 45         Object[] src = s.arr;
 46         for (int i = 0; i < src.length; i++) {
 47             d.arr[i] = src[i];
 48         }
 49     }
 50 
 51     @Benchmark
 52     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
 53     public void Obj_to_Ref_as_Obj_to_Obj_copy(Obj_as_Obj s, Ref_as_Obj d) {
 54         Object[] src = s.arr;
 55         for (int i = 0; i < src.length; i++) {
 56             d.arr[i] = src[i];
 57         }
 58     }
 59 
 60     @Benchmark
 61     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
 62     public void Obj_to_Val_as_Obj_to_Obj_copy(Obj_as_Obj s, Val_as_Obj d) {
 63         Object[] src = s.arr;
 64         for (int i = 0; i < src.length; i++) {
 65             d.arr[i] = src[i];
 66         }
 67     }
 68 
 69     @Benchmark
 70     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
 71     public void Obj_to_Int_as_Obj_to_Int_copy(Obj_as_Obj s, Int_as_Int d) {
 72         Object[] src = s.arr;
 73         for (int i = 0; i < src.length; i++) {
 74             d.arr[i] = (Int64)src[i];
 75         }
 76     }
 77 
 78     @Benchmark
 79     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
 80     public void Obj_to_Ref_as_Obj_to_Int_copy(Obj_as_Obj s, Ref_as_Int d) {
 81         Object[] src = s.arr;
 82         for (int i = 0; i < src.length; i++) {
 83             d.arr[i] = (Int64)src[i];
 84         }
 85     }
 86 
 87     @Benchmark
 88     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
 89     public void Obj_to_Val_as_Obj_to_Int_copy(Obj_as_Obj s, Val_as_Int d) {
 90         Object[] src = s.arr;
 91         for (int i = 0; i < src.length; i++) {
 92             d.arr[i] = (Int64)src[i];
 93         }
 94     }
 95 
 96     @Benchmark
 97     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
 98     public void Obj_to_Ref_as_Obj_to_Ref_copy(Obj_as_Obj s, Ref_as_Ref d) {
 99         Object[] src = s.arr;
100         for (int i = 0; i < src.length; i++) {
101             d.arr[i] = (Q64long)src[i];
102         }
103     }
104 
105     @Benchmark
106     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
107     public void Obj_to_Val_as_Obj_to_Ref_copy(Obj_as_Obj s, Val_as_Ref d) {
108         Object[] src = s.arr;
109         for (int i = 0; i < src.length; i++) {
110             d.arr[i] = (Q64long)src[i];
111         }
112     }
113 
114     @Benchmark
115     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
116     public void Obj_to_Val_as_Obj_to_Val_copy(Obj_as_Obj s, Val_as_Val d) {
117         Object[] src = s.arr;
118         for (int i = 0; i < src.length; i++) {
119             d.arr[i] = (Q64long)src[i];
120         }
121     }
122 
123     @Benchmark
124     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
125     public void Int_to_Obj_as_Obj_to_Obj_copy(Int_as_Obj s, Obj_as_Obj d) {
126         Object[] src = s.arr;
127         for (int i = 0; i < src.length; i++) {
128             d.arr[i] = src[i];
129         }
130     }
131 
132     @Benchmark
133     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
134     public void Int_to_Int_as_Obj_to_Obj_copy(Int_as_Obj s, Int_as_Obj d) {
135         Object[] src = s.arr;
136         for (int i = 0; i < src.length; i++) {
137             d.arr[i] = src[i];
138         }
139     }
140 
141     @Benchmark
142     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
143     public void Int_to_Ref_as_Obj_to_Obj_copy(Int_as_Obj s, Ref_as_Obj d) {
144         Object[] src = s.arr;
145         for (int i = 0; i < src.length; i++) {
146             d.arr[i] = src[i];
147         }
148     }
149 
150     @Benchmark
151     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
152     public void Int_to_Val_as_Obj_to_Obj_copy(Int_as_Obj s, Val_as_Obj d) {
153         Object[] src = s.arr;
154         for (int i = 0; i < src.length; i++) {
155             d.arr[i] = src[i];
156         }
157     }
158 
159     @Benchmark
160     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
161     public void Int_to_Int_as_Obj_to_Int_copy(Int_as_Obj s, Int_as_Int d) {
162         Object[] src = s.arr;
163         for (int i = 0; i < src.length; i++) {
164             d.arr[i] = (Int64)src[i];
165         }
166     }
167 
168     @Benchmark
169     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
170     public void Int_to_Ref_as_Obj_to_Int_copy(Int_as_Obj s, Ref_as_Int d) {
171         Object[] src = s.arr;
172         for (int i = 0; i < src.length; i++) {
173             d.arr[i] = (Int64)src[i];
174         }
175     }
176 
177     @Benchmark
178     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
179     public void Int_to_Val_as_Obj_to_Int_copy(Int_as_Obj s, Val_as_Int d) {
180         Object[] src = s.arr;
181         for (int i = 0; i < src.length; i++) {
182             d.arr[i] = (Int64)src[i];
183         }
184     }
185 
186     @Benchmark
187     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
188     public void Int_to_Ref_as_Obj_to_Ref_copy(Int_as_Obj s, Ref_as_Ref d) {
189         Object[] src = s.arr;
190         for (int i = 0; i < src.length; i++) {
191             d.arr[i] = (Q64long)src[i];
192         }
193     }
194 
195     @Benchmark
196     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
197     public void Int_to_Val_as_Obj_to_Ref_copy(Int_as_Obj s, Val_as_Ref d) {
198         Object[] src = s.arr;
199         for (int i = 0; i < src.length; i++) {
200             d.arr[i] = (Q64long)src[i];
201         }
202     }
203 
204     @Benchmark
205     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
206     public void Int_to_Val_as_Obj_to_Val_copy(Int_as_Obj s, Val_as_Val d) {
207         Object[] src = s.arr;
208         for (int i = 0; i < src.length; i++) {
209             d.arr[i] = (Q64long)src[i];
210         }
211     }
212 
213     @Benchmark
214     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
215     public void Ref_to_Obj_as_Obj_to_Obj_copy(Ref_as_Obj s, Obj_as_Obj d) {
216         Object[] src = s.arr;
217         for (int i = 0; i < src.length; i++) {
218             d.arr[i] = src[i];
219         }
220     }
221 
222     @Benchmark
223     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
224     public void Ref_to_Int_as_Obj_to_Obj_copy(Ref_as_Obj s, Int_as_Obj d) {
225         Object[] src = s.arr;
226         for (int i = 0; i < src.length; i++) {
227             d.arr[i] = src[i];
228         }
229     }
230 
231     @Benchmark
232     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
233     public void Ref_to_Ref_as_Obj_to_Obj_copy(Ref_as_Obj s, Ref_as_Obj d) {
234         Object[] src = s.arr;
235         for (int i = 0; i < src.length; i++) {
236             d.arr[i] = src[i];
237         }
238     }
239 
240     @Benchmark
241     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
242     public void Ref_to_Val_as_Obj_to_Obj_copy(Ref_as_Obj s, Val_as_Obj d) {
243         Object[] src = s.arr;
244         for (int i = 0; i < src.length; i++) {
245             d.arr[i] = src[i];
246         }
247     }
248 
249     @Benchmark
250     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
251     public void Ref_to_Int_as_Obj_to_Int_copy(Ref_as_Obj s, Int_as_Int d) {
252         Object[] src = s.arr;
253         for (int i = 0; i < src.length; i++) {
254             d.arr[i] = (Int64)src[i];
255         }
256     }
257 
258     @Benchmark
259     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
260     public void Ref_to_Ref_as_Obj_to_Int_copy(Ref_as_Obj s, Ref_as_Int d) {
261         Object[] src = s.arr;
262         for (int i = 0; i < src.length; i++) {
263             d.arr[i] = (Int64)src[i];
264         }
265     }
266 
267     @Benchmark
268     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
269     public void Ref_to_Val_as_Obj_to_Int_copy(Ref_as_Obj s, Val_as_Int d) {
270         Object[] src = s.arr;
271         for (int i = 0; i < src.length; i++) {
272             d.arr[i] = (Int64)src[i];
273         }
274     }
275 
276     @Benchmark
277     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
278     public void Ref_to_Ref_as_Obj_to_Ref_copy(Ref_as_Obj s, Ref_as_Ref d) {
279         Object[] src = s.arr;
280         for (int i = 0; i < src.length; i++) {
281             d.arr[i] = (Q64long)src[i];
282         }
283     }
284 
285     @Benchmark
286     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
287     public void Ref_to_Val_as_Obj_to_Ref_copy(Ref_as_Obj s, Val_as_Ref d) {
288         Object[] src = s.arr;
289         for (int i = 0; i < src.length; i++) {
290             d.arr[i] = (Q64long)src[i];
291         }
292     }
293 
294     @Benchmark
295     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
296     public void Ref_to_Val_as_Obj_to_Val_copy(Ref_as_Obj s, Val_as_Val d) {
297         Object[] src = s.arr;
298         for (int i = 0; i < src.length; i++) {
299             d.arr[i] = (Q64long)src[i];
300         }
301     }
302 
303     @Benchmark
304     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
305     public void Val_to_Obj_as_Obj_to_Obj_copy(Val_as_Obj s, Obj_as_Obj d) {
306         Object[] src = s.arr;
307         for (int i = 0; i < src.length; i++) {
308             d.arr[i] = src[i];
309         }
310     }
311 
312     @Benchmark
313     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
314     public void Val_to_Int_as_Obj_to_Obj_copy(Val_as_Obj s, Int_as_Obj d) {
315         Object[] src = s.arr;
316         for (int i = 0; i < src.length; i++) {
317             d.arr[i] = src[i];
318         }
319     }
320 
321     @Benchmark
322     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
323     public void Val_to_Ref_as_Obj_to_Obj_copy(Val_as_Obj s, Ref_as_Obj d) {
324         Object[] src = s.arr;
325         for (int i = 0; i < src.length; i++) {
326             d.arr[i] = src[i];
327         }
328     }
329 
330     @Benchmark
331     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
332     public void Val_to_Val_as_Obj_to_Obj_copy(Val_as_Obj s, Val_as_Obj d) {
333         Object[] src = s.arr;
334         for (int i = 0; i < src.length; i++) {
335             d.arr[i] = src[i];
336         }
337     }
338 
339     @Benchmark
340     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
341     public void Val_to_Int_as_Obj_to_Int_copy(Val_as_Obj s, Int_as_Int d) {
342         Object[] src = s.arr;
343         for (int i = 0; i < src.length; i++) {
344             d.arr[i] = (Int64)src[i];
345         }
346     }
347 
348     @Benchmark
349     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
350     public void Val_to_Ref_as_Obj_to_Int_copy(Val_as_Obj s, Ref_as_Int d) {
351         Object[] src = s.arr;
352         for (int i = 0; i < src.length; i++) {
353             d.arr[i] = (Int64)src[i];
354         }
355     }
356 
357     @Benchmark
358     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
359     public void Val_to_Val_as_Obj_to_Int_copy(Val_as_Obj s, Val_as_Int d) {
360         Object[] src = s.arr;
361         for (int i = 0; i < src.length; i++) {
362             d.arr[i] = (Int64)src[i];
363         }
364     }
365 
366     @Benchmark
367     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
368     public void Val_to_Ref_as_Obj_to_Ref_copy(Val_as_Obj s, Ref_as_Ref d) {
369         Object[] src = s.arr;
370         for (int i = 0; i < src.length; i++) {
371             d.arr[i] = (Q64long)src[i];
372         }
373     }
374 
375     @Benchmark
376     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
377     public void Val_to_Val_as_Obj_to_Ref_copy(Val_as_Obj s, Val_as_Ref d) {
378         Object[] src = s.arr;
379         for (int i = 0; i < src.length; i++) {
380             d.arr[i] = (Q64long)src[i];
381         }
382     }
383 
384     @Benchmark
385     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
386     public void Val_to_Val_as_Obj_to_Val_copy(Val_as_Obj s, Val_as_Val d) {
387         Object[] src = s.arr;
388         for (int i = 0; i < src.length; i++) {
389             d.arr[i] = (Q64long)src[i];
390         }
391     }
392 
393     @Benchmark
394     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
395     public void Int_to_Obj_as_Int_to_Obj_copy(Int_as_Int s, Obj_as_Obj d) {
396         Int64[] src = s.arr;
397         for (int i = 0; i < src.length; i++) {
398             d.arr[i] = src[i];
399         }
400     }
401 
402     @Benchmark
403     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
404     public void Int_to_Int_as_Int_to_Obj_copy(Int_as_Int s, Int_as_Obj d) {
405         Int64[] src = s.arr;
406         for (int i = 0; i < src.length; i++) {
407             d.arr[i] = src[i];
408         }
409     }
410 
411     @Benchmark
412     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
413     public void Int_to_Ref_as_Int_to_Obj_copy(Int_as_Int s, Ref_as_Obj d) {
414         Int64[] src = s.arr;
415         for (int i = 0; i < src.length; i++) {
416             d.arr[i] = src[i];
417         }
418     }
419 
420     @Benchmark
421     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
422     public void Int_to_Val_as_Int_to_Obj_copy(Int_as_Int s, Val_as_Obj d) {
423         Int64[] src = s.arr;
424         for (int i = 0; i < src.length; i++) {
425             d.arr[i] = src[i];
426         }
427     }
428 
429     @Benchmark
430     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
431     public void Int_to_Int_as_Int_to_Int_copy(Int_as_Int s, Int_as_Int d) {
432         Int64[] src = s.arr;
433         for (int i = 0; i < src.length; i++) {
434             d.arr[i] = src[i];
435         }
436     }
437 
438     @Benchmark
439     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
440     public void Int_to_Ref_as_Int_to_Int_copy(Int_as_Int s, Ref_as_Int d) {
441         Int64[] src = s.arr;
442         for (int i = 0; i < src.length; i++) {
443             d.arr[i] = src[i];
444         }
445     }
446 
447     @Benchmark
448     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
449     public void Int_to_Val_as_Int_to_Int_copy(Int_as_Int s, Val_as_Int d) {
450         Int64[] src = s.arr;
451         for (int i = 0; i < src.length; i++) {
452             d.arr[i] = src[i];
453         }
454     }
455 
456     @Benchmark
457     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
458     public void Int_to_Ref_as_Int_to_Ref_copy(Int_as_Int s, Ref_as_Ref d) {
459         Int64[] src = s.arr;
460         for (int i = 0; i < src.length; i++) {
461             d.arr[i] = (Q64long)src[i];
462         }
463     }
464 
465     @Benchmark
466     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
467     public void Int_to_Val_as_Int_to_Ref_copy(Int_as_Int s, Val_as_Ref d) {
468         Int64[] src = s.arr;
469         for (int i = 0; i < src.length; i++) {
470             d.arr[i] = (Q64long)src[i];
471         }
472     }
473 
474     @Benchmark
475     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
476     public void Int_to_Val_as_Int_to_Val_copy(Int_as_Int s, Val_as_Val d) {
477         Int64[] src = s.arr;
478         for (int i = 0; i < src.length; i++) {
479             d.arr[i] = (Q64long)src[i];
480         }
481     }
482 
483     @Benchmark
484     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
485     public void Ref_to_Obj_as_Int_to_Obj_copy(Ref_as_Int s, Obj_as_Obj d) {
486         Int64[] src = s.arr;
487         for (int i = 0; i < src.length; i++) {
488             d.arr[i] = src[i];
489         }
490     }
491 
492     @Benchmark
493     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
494     public void Ref_to_Int_as_Int_to_Obj_copy(Ref_as_Int s, Int_as_Obj d) {
495         Int64[] src = s.arr;
496         for (int i = 0; i < src.length; i++) {
497             d.arr[i] = src[i];
498         }
499     }
500 
501     @Benchmark
502     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
503     public void Ref_to_Ref_as_Int_to_Obj_copy(Ref_as_Int s, Ref_as_Obj d) {
504         Int64[] src = s.arr;
505         for (int i = 0; i < src.length; i++) {
506             d.arr[i] = src[i];
507         }
508     }
509 
510     @Benchmark
511     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
512     public void Ref_to_Val_as_Int_to_Obj_copy(Ref_as_Int s, Val_as_Obj d) {
513         Int64[] src = s.arr;
514         for (int i = 0; i < src.length; i++) {
515             d.arr[i] = src[i];
516         }
517     }
518 
519     @Benchmark
520     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
521     public void Ref_to_Int_as_Int_to_Int_copy(Ref_as_Int s, Int_as_Int d) {
522         Int64[] src = s.arr;
523         for (int i = 0; i < src.length; i++) {
524             d.arr[i] = src[i];
525         }
526     }
527 
528     @Benchmark
529     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
530     public void Ref_to_Ref_as_Int_to_Int_copy(Ref_as_Int s, Ref_as_Int d) {
531         Int64[] src = s.arr;
532         for (int i = 0; i < src.length; i++) {
533             d.arr[i] = src[i];
534         }
535     }
536 
537     @Benchmark
538     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
539     public void Ref_to_Val_as_Int_to_Int_copy(Ref_as_Int s, Val_as_Int d) {
540         Int64[] src = s.arr;
541         for (int i = 0; i < src.length; i++) {
542             d.arr[i] = src[i];
543         }
544     }
545 
546     @Benchmark
547     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
548     public void Ref_to_Ref_as_Int_to_Ref_copy(Ref_as_Int s, Ref_as_Ref d) {
549         Int64[] src = s.arr;
550         for (int i = 0; i < src.length; i++) {
551             d.arr[i] = (Q64long)src[i];
552         }
553     }
554 
555     @Benchmark
556     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
557     public void Ref_to_Val_as_Int_to_Ref_copy(Ref_as_Int s, Val_as_Ref d) {
558         Int64[] src = s.arr;
559         for (int i = 0; i < src.length; i++) {
560             d.arr[i] = (Q64long)src[i];
561         }
562     }
563 
564     @Benchmark
565     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
566     public void Ref_to_Val_as_Int_to_Val_copy(Ref_as_Int s, Val_as_Val d) {
567         Int64[] src = s.arr;
568         for (int i = 0; i < src.length; i++) {
569             d.arr[i] = (Q64long)src[i];
570         }
571     }
572 
573     @Benchmark
574     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
575     public void Val_to_Obj_as_Int_to_Obj_copy(Val_as_Int s, Obj_as_Obj d) {
576         Int64[] src = s.arr;
577         for (int i = 0; i < src.length; i++) {
578             d.arr[i] = src[i];
579         }
580     }
581 
582     @Benchmark
583     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
584     public void Val_to_Int_as_Int_to_Obj_copy(Val_as_Int s, Int_as_Obj d) {
585         Int64[] src = s.arr;
586         for (int i = 0; i < src.length; i++) {
587             d.arr[i] = src[i];
588         }
589     }
590 
591     @Benchmark
592     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
593     public void Val_to_Ref_as_Int_to_Obj_copy(Val_as_Int s, Ref_as_Obj d) {
594         Int64[] src = s.arr;
595         for (int i = 0; i < src.length; i++) {
596             d.arr[i] = src[i];
597         }
598     }
599 
600     @Benchmark
601     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
602     public void Val_to_Val_as_Int_to_Obj_copy(Val_as_Int s, Val_as_Obj d) {
603         Int64[] src = s.arr;
604         for (int i = 0; i < src.length; i++) {
605             d.arr[i] = src[i];
606         }
607     }
608 
609     @Benchmark
610     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
611     public void Val_to_Int_as_Int_to_Int_copy(Val_as_Int s, Int_as_Int d) {
612         Int64[] src = s.arr;
613         for (int i = 0; i < src.length; i++) {
614             d.arr[i] = src[i];
615         }
616     }
617 
618     @Benchmark
619     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
620     public void Val_to_Ref_as_Int_to_Int_copy(Val_as_Int s, Ref_as_Int d) {
621         Int64[] src = s.arr;
622         for (int i = 0; i < src.length; i++) {
623             d.arr[i] = src[i];
624         }
625     }
626 
627     @Benchmark
628     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
629     public void Val_to_Val_as_Int_to_Int_copy(Val_as_Int s, Val_as_Int d) {
630         Int64[] src = s.arr;
631         for (int i = 0; i < src.length; i++) {
632             d.arr[i] = src[i];
633         }
634     }
635 
636     @Benchmark
637     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
638     public void Val_to_Ref_as_Int_to_Ref_copy(Val_as_Int s, Ref_as_Ref d) {
639         Int64[] src = s.arr;
640         for (int i = 0; i < src.length; i++) {
641             d.arr[i] = (Q64long)src[i];
642         }
643     }
644 
645     @Benchmark
646     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
647     public void Val_to_Val_as_Int_to_Ref_copy(Val_as_Int s, Val_as_Ref d) {
648         Int64[] src = s.arr;
649         for (int i = 0; i < src.length; i++) {
650             d.arr[i] = (Q64long)src[i];
651         }
652     }
653 
654     @Benchmark
655     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
656     public void Val_to_Val_as_Int_to_Val_copy(Val_as_Int s, Val_as_Val d) {
657         Int64[] src = s.arr;
658         for (int i = 0; i < src.length; i++) {
659             d.arr[i] = (Q64long)src[i];
660         }
661     }
662 
663     @Benchmark
664     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
665     public void Ref_to_Obj_as_Ref_to_Obj_copy(Ref_as_Ref s, Obj_as_Obj d) {
666         Q64long[] src = s.arr;
667         for (int i = 0; i < src.length; i++) {
668             d.arr[i] = src[i];
669         }
670     }
671 
672     @Benchmark
673     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
674     public void Ref_to_Int_as_Ref_to_Obj_copy(Ref_as_Ref s, Int_as_Obj d) {
675         Q64long[] src = s.arr;
676         for (int i = 0; i < src.length; i++) {
677             d.arr[i] = src[i];
678         }
679     }
680 
681     @Benchmark
682     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
683     public void Ref_to_Ref_as_Ref_to_Obj_copy(Ref_as_Ref s, Ref_as_Obj d) {
684         Q64long[] src = s.arr;
685         for (int i = 0; i < src.length; i++) {
686             d.arr[i] = src[i];
687         }
688     }
689 
690     @Benchmark
691     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
692     public void Ref_to_Val_as_Ref_to_Obj_copy(Ref_as_Ref s, Val_as_Obj d) {
693         Q64long[] src = s.arr;
694         for (int i = 0; i < src.length; i++) {
695             d.arr[i] = src[i];
696         }
697     }
698 
699     @Benchmark
700     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
701     public void Ref_to_Int_as_Ref_to_Int_copy(Ref_as_Ref s, Int_as_Int d) {
702         Q64long[] src = s.arr;
703         for (int i = 0; i < src.length; i++) {
704             d.arr[i] = src[i];
705         }
706     }
707 
708     @Benchmark
709     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
710     public void Ref_to_Ref_as_Ref_to_Int_copy(Ref_as_Ref s, Ref_as_Int d) {
711         Q64long[] src = s.arr;
712         for (int i = 0; i < src.length; i++) {
713             d.arr[i] = src[i];
714         }
715     }
716 
717     @Benchmark
718     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
719     public void Ref_to_Val_as_Ref_to_Int_copy(Ref_as_Ref s, Val_as_Int d) {
720         Q64long[] src = s.arr;
721         for (int i = 0; i < src.length; i++) {
722             d.arr[i] = src[i];
723         }
724     }
725 
726     @Benchmark
727     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
728     public void Ref_to_Ref_as_Ref_to_Ref_copy(Ref_as_Ref s, Ref_as_Ref d) {
729         Q64long[] src = s.arr;
730         for (int i = 0; i < src.length; i++) {
731             d.arr[i] = src[i];
732         }
733     }
734 
735     @Benchmark
736     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
737     public void Ref_to_Val_as_Ref_to_Ref_copy(Ref_as_Ref s, Val_as_Ref d) {
738         Q64long[] src = s.arr;
739         for (int i = 0; i < src.length; i++) {
740             d.arr[i] = src[i];
741         }
742     }
743 
744     @Benchmark
745     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
746     public void Ref_to_Val_as_Ref_to_Val_copy(Ref_as_Ref s, Val_as_Val d) {
747         Q64long[] src = s.arr;
748         for (int i = 0; i < src.length; i++) {
749             d.arr[i] = src[i];
750         }
751     }
752 
753     @Benchmark
754     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
755     public void Val_to_Obj_as_Ref_to_Obj_copy(Val_as_Ref s, Obj_as_Obj d) {
756         Q64long[] src = s.arr;
757         for (int i = 0; i < src.length; i++) {
758             d.arr[i] = src[i];
759         }
760     }
761 
762     @Benchmark
763     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
764     public void Val_to_Int_as_Ref_to_Obj_copy(Val_as_Ref s, Int_as_Obj d) {
765         Q64long[] src = s.arr;
766         for (int i = 0; i < src.length; i++) {
767             d.arr[i] = src[i];
768         }
769     }
770 
771     @Benchmark
772     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
773     public void Val_to_Ref_as_Ref_to_Obj_copy(Val_as_Ref s, Ref_as_Obj d) {
774         Q64long[] src = s.arr;
775         for (int i = 0; i < src.length; i++) {
776             d.arr[i] = src[i];
777         }
778     }
779 
780     @Benchmark
781     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
782     public void Val_to_Val_as_Ref_to_Obj_copy(Val_as_Ref s, Val_as_Obj d) {
783         Q64long[] src = s.arr;
784         for (int i = 0; i < src.length; i++) {
785             d.arr[i] = src[i];
786         }
787     }
788 
789     @Benchmark
790     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
791     public void Val_to_Int_as_Ref_to_Int_copy(Val_as_Ref s, Int_as_Int d) {
792         Q64long[] src = s.arr;
793         for (int i = 0; i < src.length; i++) {
794             d.arr[i] = src[i];
795         }
796     }
797 
798     @Benchmark
799     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
800     public void Val_to_Ref_as_Ref_to_Int_copy(Val_as_Ref s, Ref_as_Int d) {
801         Q64long[] src = s.arr;
802         for (int i = 0; i < src.length; i++) {
803             d.arr[i] = src[i];
804         }
805     }
806 
807     @Benchmark
808     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
809     public void Val_to_Val_as_Ref_to_Int_copy(Val_as_Ref s, Val_as_Int d) {
810         Q64long[] src = s.arr;
811         for (int i = 0; i < src.length; i++) {
812             d.arr[i] = src[i];
813         }
814     }
815 
816     @Benchmark
817     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
818     public void Val_to_Ref_as_Ref_to_Ref_copy(Val_as_Ref s, Ref_as_Ref d) {
819         Q64long[] src = s.arr;
820         for (int i = 0; i < src.length; i++) {
821             d.arr[i] = src[i];
822         }
823     }
824 
825     @Benchmark
826     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
827     public void Val_to_Val_as_Ref_to_Ref_copy(Val_as_Ref s, Val_as_Ref d) {
828         Q64long[] src = s.arr;
829         for (int i = 0; i < src.length; i++) {
830             d.arr[i] = src[i];
831         }
832     }
833 
834     @Benchmark
835     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
836     public void Val_to_Val_as_Ref_to_Val_copy(Val_as_Ref s, Val_as_Val d) {
837         Q64long[] src = s.arr;
838         for (int i = 0; i < src.length; i++) {
839             d.arr[i] = src[i];
840         }
841     }
842 
843     @Benchmark
844     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
845     public void Val_to_Obj_as_Val_to_Obj_copy(Val_as_Val s, Obj_as_Obj d) {
846         Q64long[] src = s.arr;
847         for (int i = 0; i < src.length; i++) {
848             d.arr[i] = src[i];
849         }
850     }
851 
852     @Benchmark
853     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
854     public void Val_to_Int_as_Val_to_Obj_copy(Val_as_Val s, Int_as_Obj d) {
855         Q64long[] src = s.arr;
856         for (int i = 0; i < src.length; i++) {
857             d.arr[i] = src[i];
858         }
859     }
860 
861     @Benchmark
862     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
863     public void Val_to_Ref_as_Val_to_Obj_copy(Val_as_Val s, Ref_as_Obj d) {
864         Q64long[] src = s.arr;
865         for (int i = 0; i < src.length; i++) {
866             d.arr[i] = src[i];
867         }
868     }
869 
870     @Benchmark
871     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
872     public void Val_to_Val_as_Val_to_Obj_copy(Val_as_Val s, Val_as_Obj d) {
873         Q64long[] src = s.arr;
874         for (int i = 0; i < src.length; i++) {
875             d.arr[i] = src[i];
876         }
877     }
878 
879     @Benchmark
880     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
881     public void Val_to_Int_as_Val_to_Int_copy(Val_as_Val s, Int_as_Int d) {
882         Q64long[] src = s.arr;
883         for (int i = 0; i < src.length; i++) {
884             d.arr[i] = src[i];
885         }
886     }
887 
888     @Benchmark
889     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
890     public void Val_to_Ref_as_Val_to_Int_copy(Val_as_Val s, Ref_as_Int d) {
891         Q64long[] src = s.arr;
892         for (int i = 0; i < src.length; i++) {
893             d.arr[i] = src[i];
894         }
895     }
896 
897     @Benchmark
898     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
899     public void Val_to_Val_as_Val_to_Int_copy(Val_as_Val s, Val_as_Int d) {
900         Q64long[] src = s.arr;
901         for (int i = 0; i < src.length; i++) {
902             d.arr[i] = src[i];
903         }
904     }
905 
906     @Benchmark
907     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
908     public void Val_to_Ref_as_Val_to_Ref_copy(Val_as_Val s, Ref_as_Ref d) {
909         Q64long[] src = s.arr;
910         for (int i = 0; i < src.length; i++) {
911             d.arr[i] = src[i];
912         }
913     }
914 
915     @Benchmark
916     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
917     public void Val_to_Val_as_Val_to_Ref_copy(Val_as_Val s, Val_as_Ref d) {
918         Q64long[] src = s.arr;
919         for (int i = 0; i < src.length; i++) {
920             d.arr[i] = src[i];
921         }
922     }
923 
924     @Benchmark
925     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
926     public void Val_to_Val_as_Val_to_Val_copy(Val_as_Val s, Val_as_Val d) {
927         Q64long[] src = s.arr;
928         for (int i = 0; i < src.length; i++) {
929             d.arr[i] = src[i];
930         }
931     }
932 
933 }