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.jmh.annotations.Benchmark;
 27 import org.openjdk.jmh.annotations.CompilerControl;
 28 
 29 public class IdentityArrayCopy extends StatesR64long {
 30 
 31     @Benchmark
 32     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
 33     public void Obj_to_Obj_as_Obj_to_Obj_copy(Obj_as_Obj s, Obj_as_Obj d) {
 34         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
 35     }
 36 
 37     @Benchmark
 38     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
 39     public void Obj_to_Int_as_Obj_to_Obj_copy(Obj_as_Obj s, Int_as_Obj d) {
 40         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
 41     }
 42 
 43     @Benchmark
 44     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
 45     public void Obj_to_Abs_as_Obj_to_Obj_copy(Obj_as_Obj s, Abs_as_Obj d) {
 46         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
 47     }
 48 
 49     @Benchmark
 50     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
 51     public void Obj_to_Ref_as_Obj_to_Obj_copy(Obj_as_Obj s, Ref_as_Obj d) {
 52         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
 53     }
 54 
 55     @Benchmark
 56     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
 57     public void Obj_to_Int_as_Obj_to_Int_copy(Obj_as_Obj s, Int_as_Int d) {
 58         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
 59     }
 60 
 61     @Benchmark
 62     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
 63     public void Obj_to_Abs_as_Obj_to_Int_copy(Obj_as_Obj s, Abs_as_Int d) {
 64         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
 65     }
 66 
 67     @Benchmark
 68     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
 69     public void Obj_to_Ref_as_Obj_to_Int_copy(Obj_as_Obj s, Ref_as_Int d) {
 70         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
 71     }
 72 
 73     @Benchmark
 74     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
 75     public void Obj_to_Abs_as_Obj_to_Abs_copy(Obj_as_Obj s, Abs_as_Abs d) {
 76         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
 77     }
 78 
 79     @Benchmark
 80     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
 81     public void Obj_to_Ref_as_Obj_to_Abs_copy(Obj_as_Obj s, Ref_as_Abs d) {
 82         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
 83     }
 84 
 85     @Benchmark
 86     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
 87     public void Obj_to_Ref_as_Obj_to_Ref_copy(Obj_as_Obj s, Ref_as_Ref d) {
 88         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
 89     }
 90 
 91     @Benchmark
 92     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
 93     public void Int_to_Obj_as_Obj_to_Obj_copy(Int_as_Obj s, Obj_as_Obj d) {
 94         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
 95     }
 96 
 97     @Benchmark
 98     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
 99     public void Int_to_Int_as_Obj_to_Obj_copy(Int_as_Obj s, Int_as_Obj d) {
100         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
101     }
102 
103     @Benchmark
104     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
105     public void Int_to_Abs_as_Obj_to_Obj_copy(Int_as_Obj s, Abs_as_Obj d) {
106         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
107     }
108 
109     @Benchmark
110     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
111     public void Int_to_Ref_as_Obj_to_Obj_copy(Int_as_Obj s, Ref_as_Obj d) {
112         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
113     }
114 
115     @Benchmark
116     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
117     public void Int_to_Int_as_Obj_to_Int_copy(Int_as_Obj s, Int_as_Int d) {
118         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
119     }
120 
121     @Benchmark
122     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
123     public void Int_to_Abs_as_Obj_to_Int_copy(Int_as_Obj s, Abs_as_Int d) {
124         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
125     }
126 
127     @Benchmark
128     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
129     public void Int_to_Ref_as_Obj_to_Int_copy(Int_as_Obj s, Ref_as_Int d) {
130         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
131     }
132 
133     @Benchmark
134     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
135     public void Int_to_Abs_as_Obj_to_Abs_copy(Int_as_Obj s, Abs_as_Abs d) {
136         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
137     }
138 
139     @Benchmark
140     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
141     public void Int_to_Ref_as_Obj_to_Abs_copy(Int_as_Obj s, Ref_as_Abs d) {
142         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
143     }
144 
145     @Benchmark
146     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
147     public void Int_to_Ref_as_Obj_to_Ref_copy(Int_as_Obj s, Ref_as_Ref d) {
148         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
149     }
150 
151     @Benchmark
152     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
153     public void Abs_to_Obj_as_Obj_to_Obj_copy(Abs_as_Obj s, Obj_as_Obj d) {
154         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
155     }
156 
157     @Benchmark
158     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
159     public void Abs_to_Int_as_Obj_to_Obj_copy(Abs_as_Obj s, Int_as_Obj d) {
160         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
161     }
162 
163     @Benchmark
164     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
165     public void Abs_to_Abs_as_Obj_to_Obj_copy(Abs_as_Obj s, Abs_as_Obj d) {
166         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
167     }
168 
169     @Benchmark
170     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
171     public void Abs_to_Ref_as_Obj_to_Obj_copy(Abs_as_Obj s, Ref_as_Obj d) {
172         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
173     }
174 
175     @Benchmark
176     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
177     public void Abs_to_Int_as_Obj_to_Int_copy(Abs_as_Obj s, Int_as_Int d) {
178         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
179     }
180 
181     @Benchmark
182     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
183     public void Abs_to_Abs_as_Obj_to_Int_copy(Abs_as_Obj s, Abs_as_Int d) {
184         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
185     }
186 
187     @Benchmark
188     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
189     public void Abs_to_Ref_as_Obj_to_Int_copy(Abs_as_Obj s, Ref_as_Int d) {
190         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
191     }
192 
193     @Benchmark
194     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
195     public void Abs_to_Abs_as_Obj_to_Abs_copy(Abs_as_Obj s, Abs_as_Abs d) {
196         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
197     }
198 
199     @Benchmark
200     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
201     public void Abs_to_Ref_as_Obj_to_Abs_copy(Abs_as_Obj s, Ref_as_Abs d) {
202         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
203     }
204 
205     @Benchmark
206     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
207     public void Abs_to_Ref_as_Obj_to_Ref_copy(Abs_as_Obj s, Ref_as_Ref d) {
208         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
209     }
210 
211     @Benchmark
212     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
213     public void Ref_to_Obj_as_Obj_to_Obj_copy(Ref_as_Obj s, Obj_as_Obj d) {
214         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
215     }
216 
217     @Benchmark
218     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
219     public void Ref_to_Int_as_Obj_to_Obj_copy(Ref_as_Obj s, Int_as_Obj d) {
220         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
221     }
222 
223     @Benchmark
224     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
225     public void Ref_to_Abs_as_Obj_to_Obj_copy(Ref_as_Obj s, Abs_as_Obj d) {
226         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
227     }
228 
229     @Benchmark
230     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
231     public void Ref_to_Ref_as_Obj_to_Obj_copy(Ref_as_Obj s, Ref_as_Obj d) {
232         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
233     }
234 
235     @Benchmark
236     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
237     public void Ref_to_Int_as_Obj_to_Int_copy(Ref_as_Obj s, Int_as_Int d) {
238         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
239     }
240 
241     @Benchmark
242     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
243     public void Ref_to_Abs_as_Obj_to_Int_copy(Ref_as_Obj s, Abs_as_Int d) {
244         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
245     }
246 
247     @Benchmark
248     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
249     public void Ref_to_Ref_as_Obj_to_Int_copy(Ref_as_Obj s, Ref_as_Int d) {
250         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
251     }
252 
253     @Benchmark
254     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
255     public void Ref_to_Abs_as_Obj_to_Abs_copy(Ref_as_Obj s, Abs_as_Abs d) {
256         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
257     }
258 
259     @Benchmark
260     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
261     public void Ref_to_Ref_as_Obj_to_Abs_copy(Ref_as_Obj s, Ref_as_Abs d) {
262         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
263     }
264 
265     @Benchmark
266     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
267     public void Ref_to_Ref_as_Obj_to_Ref_copy(Ref_as_Obj s, Ref_as_Ref d) {
268         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
269     }
270 
271     @Benchmark
272     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
273     public void Int_to_Obj_as_Int_to_Obj_copy(Int_as_Int s, Obj_as_Obj d) {
274         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
275     }
276 
277     @Benchmark
278     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
279     public void Int_to_Int_as_Int_to_Obj_copy(Int_as_Int s, Int_as_Obj d) {
280         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
281     }
282 
283     @Benchmark
284     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
285     public void Int_to_Abs_as_Int_to_Obj_copy(Int_as_Int s, Abs_as_Obj d) {
286         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
287     }
288 
289     @Benchmark
290     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
291     public void Int_to_Ref_as_Int_to_Obj_copy(Int_as_Int s, Ref_as_Obj d) {
292         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
293     }
294 
295     @Benchmark
296     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
297     public void Int_to_Int_as_Int_to_Int_copy(Int_as_Int s, Int_as_Int d) {
298         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
299     }
300 
301     @Benchmark
302     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
303     public void Int_to_Abs_as_Int_to_Int_copy(Int_as_Int s, Abs_as_Int d) {
304         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
305     }
306 
307     @Benchmark
308     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
309     public void Int_to_Ref_as_Int_to_Int_copy(Int_as_Int s, Ref_as_Int d) {
310         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
311     }
312 
313     @Benchmark
314     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
315     public void Int_to_Abs_as_Int_to_Abs_copy(Int_as_Int s, Abs_as_Abs d) {
316         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
317     }
318 
319     @Benchmark
320     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
321     public void Int_to_Ref_as_Int_to_Abs_copy(Int_as_Int s, Ref_as_Abs d) {
322         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
323     }
324 
325     @Benchmark
326     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
327     public void Int_to_Ref_as_Int_to_Ref_copy(Int_as_Int s, Ref_as_Ref d) {
328         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
329     }
330 
331     @Benchmark
332     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
333     public void Abs_to_Obj_as_Int_to_Obj_copy(Abs_as_Int s, Obj_as_Obj d) {
334         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
335     }
336 
337     @Benchmark
338     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
339     public void Abs_to_Int_as_Int_to_Obj_copy(Abs_as_Int s, Int_as_Obj d) {
340         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
341     }
342 
343     @Benchmark
344     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
345     public void Abs_to_Abs_as_Int_to_Obj_copy(Abs_as_Int s, Abs_as_Obj d) {
346         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
347     }
348 
349     @Benchmark
350     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
351     public void Abs_to_Ref_as_Int_to_Obj_copy(Abs_as_Int s, Ref_as_Obj d) {
352         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
353     }
354 
355     @Benchmark
356     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
357     public void Abs_to_Int_as_Int_to_Int_copy(Abs_as_Int s, Int_as_Int d) {
358         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
359     }
360 
361     @Benchmark
362     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
363     public void Abs_to_Abs_as_Int_to_Int_copy(Abs_as_Int s, Abs_as_Int d) {
364         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
365     }
366 
367     @Benchmark
368     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
369     public void Abs_to_Ref_as_Int_to_Int_copy(Abs_as_Int s, Ref_as_Int d) {
370         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
371     }
372 
373     @Benchmark
374     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
375     public void Abs_to_Abs_as_Int_to_Abs_copy(Abs_as_Int s, Abs_as_Abs d) {
376         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
377     }
378 
379     @Benchmark
380     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
381     public void Abs_to_Ref_as_Int_to_Abs_copy(Abs_as_Int s, Ref_as_Abs d) {
382         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
383     }
384 
385     @Benchmark
386     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
387     public void Abs_to_Ref_as_Int_to_Ref_copy(Abs_as_Int s, Ref_as_Ref d) {
388         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
389     }
390 
391     @Benchmark
392     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
393     public void Ref_to_Obj_as_Int_to_Obj_copy(Ref_as_Int s, Obj_as_Obj d) {
394         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
395     }
396 
397     @Benchmark
398     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
399     public void Ref_to_Int_as_Int_to_Obj_copy(Ref_as_Int s, Int_as_Obj d) {
400         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
401     }
402 
403     @Benchmark
404     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
405     public void Ref_to_Abs_as_Int_to_Obj_copy(Ref_as_Int s, Abs_as_Obj d) {
406         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
407     }
408 
409     @Benchmark
410     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
411     public void Ref_to_Ref_as_Int_to_Obj_copy(Ref_as_Int s, Ref_as_Obj d) {
412         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
413     }
414 
415     @Benchmark
416     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
417     public void Ref_to_Int_as_Int_to_Int_copy(Ref_as_Int s, Int_as_Int d) {
418         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
419     }
420 
421     @Benchmark
422     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
423     public void Ref_to_Abs_as_Int_to_Int_copy(Ref_as_Int s, Abs_as_Int d) {
424         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
425     }
426 
427     @Benchmark
428     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
429     public void Ref_to_Ref_as_Int_to_Int_copy(Ref_as_Int s, Ref_as_Int d) {
430         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
431     }
432 
433     @Benchmark
434     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
435     public void Ref_to_Abs_as_Int_to_Abs_copy(Ref_as_Int s, Abs_as_Abs d) {
436         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
437     }
438 
439     @Benchmark
440     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
441     public void Ref_to_Ref_as_Int_to_Abs_copy(Ref_as_Int s, Ref_as_Abs d) {
442         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
443     }
444 
445     @Benchmark
446     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
447     public void Ref_to_Ref_as_Int_to_Ref_copy(Ref_as_Int s, Ref_as_Ref d) {
448         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
449     }
450 
451     @Benchmark
452     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
453     public void Abs_to_Obj_as_Abs_to_Obj_copy(Abs_as_Abs s, Obj_as_Obj d) {
454         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
455     }
456 
457     @Benchmark
458     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
459     public void Abs_to_Int_as_Abs_to_Obj_copy(Abs_as_Abs s, Int_as_Obj d) {
460         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
461     }
462 
463     @Benchmark
464     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
465     public void Abs_to_Abs_as_Abs_to_Obj_copy(Abs_as_Abs s, Abs_as_Obj d) {
466         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
467     }
468 
469     @Benchmark
470     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
471     public void Abs_to_Ref_as_Abs_to_Obj_copy(Abs_as_Abs s, Ref_as_Obj d) {
472         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
473     }
474 
475     @Benchmark
476     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
477     public void Abs_to_Int_as_Abs_to_Int_copy(Abs_as_Abs s, Int_as_Int d) {
478         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
479     }
480 
481     @Benchmark
482     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
483     public void Abs_to_Abs_as_Abs_to_Int_copy(Abs_as_Abs s, Abs_as_Int d) {
484         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
485     }
486 
487     @Benchmark
488     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
489     public void Abs_to_Ref_as_Abs_to_Int_copy(Abs_as_Abs s, Ref_as_Int d) {
490         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
491     }
492 
493     @Benchmark
494     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
495     public void Abs_to_Abs_as_Abs_to_Abs_copy(Abs_as_Abs s, Abs_as_Abs d) {
496         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
497     }
498 
499     @Benchmark
500     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
501     public void Abs_to_Ref_as_Abs_to_Abs_copy(Abs_as_Abs s, Ref_as_Abs d) {
502         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
503     }
504 
505     @Benchmark
506     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
507     public void Abs_to_Ref_as_Abs_to_Ref_copy(Abs_as_Abs s, Ref_as_Ref d) {
508         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
509     }
510 
511     @Benchmark
512     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
513     public void Ref_to_Obj_as_Abs_to_Obj_copy(Ref_as_Abs s, Obj_as_Obj d) {
514         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
515     }
516 
517     @Benchmark
518     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
519     public void Ref_to_Int_as_Abs_to_Obj_copy(Ref_as_Abs s, Int_as_Obj d) {
520         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
521     }
522 
523     @Benchmark
524     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
525     public void Ref_to_Abs_as_Abs_to_Obj_copy(Ref_as_Abs s, Abs_as_Obj d) {
526         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
527     }
528 
529     @Benchmark
530     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
531     public void Ref_to_Ref_as_Abs_to_Obj_copy(Ref_as_Abs s, Ref_as_Obj d) {
532         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
533     }
534 
535     @Benchmark
536     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
537     public void Ref_to_Int_as_Abs_to_Int_copy(Ref_as_Abs s, Int_as_Int d) {
538         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
539     }
540 
541     @Benchmark
542     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
543     public void Ref_to_Abs_as_Abs_to_Int_copy(Ref_as_Abs s, Abs_as_Int d) {
544         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
545     }
546 
547     @Benchmark
548     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
549     public void Ref_to_Ref_as_Abs_to_Int_copy(Ref_as_Abs s, Ref_as_Int d) {
550         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
551     }
552 
553     @Benchmark
554     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
555     public void Ref_to_Abs_as_Abs_to_Abs_copy(Ref_as_Abs s, Abs_as_Abs d) {
556         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
557     }
558 
559     @Benchmark
560     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
561     public void Ref_to_Ref_as_Abs_to_Abs_copy(Ref_as_Abs s, Ref_as_Abs d) {
562         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
563     }
564 
565     @Benchmark
566     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
567     public void Ref_to_Ref_as_Abs_to_Ref_copy(Ref_as_Abs s, Ref_as_Ref d) {
568         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
569     }
570 
571     @Benchmark
572     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
573     public void Ref_to_Obj_as_Ref_to_Obj_copy(Ref_as_Ref s, Obj_as_Obj d) {
574         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
575     }
576 
577     @Benchmark
578     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
579     public void Ref_to_Int_as_Ref_to_Obj_copy(Ref_as_Ref s, Int_as_Obj d) {
580         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
581     }
582 
583     @Benchmark
584     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
585     public void Ref_to_Abs_as_Ref_to_Obj_copy(Ref_as_Ref s, Abs_as_Obj d) {
586         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
587     }
588 
589     @Benchmark
590     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
591     public void Ref_to_Ref_as_Ref_to_Obj_copy(Ref_as_Ref s, Ref_as_Obj d) {
592         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
593     }
594 
595     @Benchmark
596     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
597     public void Ref_to_Int_as_Ref_to_Int_copy(Ref_as_Ref s, Int_as_Int d) {
598         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
599     }
600 
601     @Benchmark
602     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
603     public void Ref_to_Abs_as_Ref_to_Int_copy(Ref_as_Ref s, Abs_as_Int d) {
604         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
605     }
606 
607     @Benchmark
608     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
609     public void Ref_to_Ref_as_Ref_to_Int_copy(Ref_as_Ref s, Ref_as_Int d) {
610         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
611     }
612 
613     @Benchmark
614     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
615     public void Ref_to_Abs_as_Ref_to_Abs_copy(Ref_as_Ref s, Abs_as_Abs d) {
616         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
617     }
618 
619     @Benchmark
620     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
621     public void Ref_to_Ref_as_Ref_to_Abs_copy(Ref_as_Ref s, Ref_as_Abs d) {
622         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
623     }
624 
625     @Benchmark
626     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
627     public void Ref_to_Ref_as_Ref_to_Ref_copy(Ref_as_Ref s, Ref_as_Ref d) {
628         System.arraycopy(s.arr, 0, d.arr, 0, s.arr.length);
629     }
630 
631 }