* src/threads/posix/lock.c: Moved to .cpp.
[cacao.git] / src / vm / jit / builtintable.inc
1 /* src/vm/jit/builtintable.inc - tables of builtin functions
2
3    Copyright (C) 1996-2005, 2006, 2007, 2008
4    CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
5
6    This file is part of CACAO.
7
8    This program is free software; you can redistribute it and/or
9    modify it under the terms of the GNU General Public License as
10    published by the Free Software Foundation; either version 2, or (at
11    your option) any later version.
12
13    This program is distributed in the hope that it will be useful, but
14    WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16    General Public License for more details.
17
18    You should have received a copy of the GNU General Public License
19    along with this program; if not, write to the Free Software
20    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21    02110-1301, USA.
22
23 */
24
25
26 #include "config.h"
27
28 #include "arch.h"
29
30 #include "threads/lock.hpp"
31
32 #include "vm/jit/builtin.hpp"
33 #include "vm/jit/jit.hpp"
34
35
36 /* internal and not automatically replaced functions **************************/
37
38 static builtintable_entry builtintable_internal[] = {
39
40 #if defined(__ALPHA__) || defined(DISABLE_GC)
41         {
42                 ICMD_F2L,
43                 0,
44                 BUILTIN_f2l,
45                 NULL,
46                 NULL,
47                 "f2l",
48                 "(F)J",
49                 NULL,
50                 NULL,
51                 NULL,
52                 NULL
53         },
54         {
55                 ICMD_D2L,
56                 0,
57                 BUILTIN_d2l,
58                 NULL,
59                 NULL,
60                 "d2l",
61                 "(D)J",
62                 NULL,
63                 NULL,
64                 NULL,
65                 NULL
66         },
67         {
68                 ICMD_F2I,
69                 0,
70                 BUILTIN_f2i,
71                 NULL,
72                 NULL,
73                 "f2i",
74                 "(F)I",
75                 NULL,
76                 NULL,
77                 NULL,
78                 NULL
79         },
80         {
81                 ICMD_D2I,
82                 0,
83                 BUILTIN_d2i,
84                 NULL,
85                 NULL,
86                 "d2i",
87                 "(D)I",
88                 NULL,
89                 NULL,
90                 NULL,
91                 NULL
92         },
93 #endif
94
95 #if !SUPPORT_DIVISION || defined(DISABLE_GC)
96         {
97                 ICMD_IDIV,
98                 0,
99                 BUILTIN_idiv,
100                 NULL,
101                 NULL,
102                 "idiv",
103                 "(II)I",
104                 NULL,
105                 NULL,
106                 NULL,
107                 NULL
108         },
109         {
110                 ICMD_IREM,
111                 0,
112                 BUILTIN_irem,
113                 NULL,
114                 NULL,
115                 "irem",
116                 "(II)I",
117                 NULL,
118                 NULL,
119                 NULL,
120                 NULL
121         },
122 #endif
123
124 #if !(SUPPORT_DIVISION && SUPPORT_LONG && SUPPORT_LONG_DIV) || defined(DISABLE_GC)
125         {
126                 ICMD_LDIV,
127                 0,
128                 BUILTIN_ldiv,
129                 NULL,
130                 NULL,
131                 "ldiv",
132                 "(JJ)J",
133                 NULL,
134                 NULL,
135                 NULL,
136                 NULL
137         },
138         {
139                 ICMD_LREM,
140                 0,
141                 BUILTIN_lrem,
142                 NULL,
143                 NULL,
144                 "lrem",
145                 "(JJ)J",
146                 NULL,
147                 NULL,
148                 NULL,
149                 NULL
150         },
151 #endif
152
153         {
154                 ICMD_FREM,
155                 0,
156                 BUILTIN_frem,
157                 NULL,
158                 NULL,
159                 "frem",
160                 "(FF)F",
161                 NULL,
162                 NULL,
163                 NULL,
164                 NULL
165         },
166         {
167                 ICMD_DREM,
168                 0,
169                 BUILTIN_drem,
170                 NULL,
171                 NULL,
172                 "drem",
173                 "(DD)D",
174                 NULL,
175                 NULL,
176                 NULL,
177                 NULL
178         },
179
180
181         /* internal functions *****************************************************/
182
183         {
184                 ICMD_NEW,
185                 BUILTINTABLE_FLAG_STUB,
186                 BUILTIN_new,
187                 NULL,
188                 NULL,
189                 "new",
190                 "(Ljava/lang/Class;)Ljava/lang/Object;",
191                 NULL,
192                 NULL,
193                 NULL,
194                 NULL
195         },
196
197 #if defined(ENABLE_TLH)
198         {
199                 ICMD_NEW,
200                 BUILTINTABLE_FLAG_STUB,
201                 BUILTIN_tlh_new,
202                 NULL,
203                 NULL,
204                 "tlh_new",
205                 "(Ljava/lang/Class;)Ljava/lang/Object;",
206                 NULL,
207                 NULL,
208                 NULL,
209                 NULL
210         },
211 #endif
212
213 #if defined(ENABLE_ESCAPE_REASON)
214         {
215                 ICMD_NEW,
216                 BUILTINTABLE_FLAG_STUB,
217                 BUILTIN_escape_reason_new,
218                 NULL,
219                 NULL,
220                 "escape_reason_new",
221                 "(Ljava/lang/Class;)Ljava/lang/Object;",
222                 NULL,
223                 NULL,
224                 NULL,
225                 NULL
226         },
227 #endif
228
229         {
230                 ICMD_NEW,
231                 0,
232                 BUILTIN_FAST_new,
233                 NULL,
234                 NULL,
235                 "fast-new",
236                 "(Ljava/lang/Class;)Ljava/lang/Object;",
237                 NULL,
238                 NULL,
239                 NULL,
240                 NULL
241         },
242         {
243                 ICMD_ANEWARRAY,
244                 BUILTINTABLE_FLAG_STUB,
245                 BUILTIN_newarray,
246                 NULL,
247                 NULL,
248                 "newarray",
249                 "(ILjava/lang/Class;)[Ljava/lang/Object;",
250                 NULL,
251                 NULL,
252                 NULL,
253                 NULL
254         },
255         {
256                 ICMD_NEWARRAY,
257                 BUILTINTABLE_FLAG_STUB,
258                 BUILTIN_newarray_boolean,
259                 NULL,
260                 NULL,
261                 "newarray_boolean",
262                 "(I)[Z",
263                 NULL,
264                 NULL,
265                 NULL,
266                 NULL
267         },
268         {
269                 ICMD_NEWARRAY,
270                 BUILTINTABLE_FLAG_STUB,
271                 BUILTIN_newarray_byte,
272                 NULL,
273                 NULL,
274                 "newarray_byte",
275                 "(I)[B",
276                 NULL,
277                 NULL,
278                 NULL,
279                 NULL
280         },
281         {
282                 ICMD_NEWARRAY,
283                 BUILTINTABLE_FLAG_STUB,
284                 BUILTIN_newarray_char,
285                 NULL,
286                 NULL,
287                 "newarray_char",
288                 "(I)[C",
289                 NULL,
290                 NULL,
291                 NULL,
292                 NULL
293         },
294         {
295                 ICMD_NEWARRAY,
296                 BUILTINTABLE_FLAG_STUB,
297                 BUILTIN_newarray_short,
298                 NULL,
299                 NULL,
300                 "newarray_short",
301                 "(I)[S",
302                 NULL,
303                 NULL,
304                 NULL,
305                 NULL
306         },
307         {
308                 ICMD_NEWARRAY,
309                 BUILTINTABLE_FLAG_STUB,
310                 BUILTIN_newarray_int,
311                 NULL,
312                 NULL,
313                 "newarray_int",
314                 "(I)[I",
315                 NULL,
316                 NULL,
317                 NULL,
318                 NULL
319         },
320         {
321                 ICMD_NEWARRAY,
322                 BUILTINTABLE_FLAG_STUB,
323                 BUILTIN_newarray_long,
324                 NULL,
325                 NULL,
326                 "newarray_long",
327                 "(I)[J",
328                 NULL,
329                 NULL,
330                 NULL,
331                 NULL
332         },
333         {
334                 ICMD_NEWARRAY,
335                 BUILTINTABLE_FLAG_STUB,
336                 BUILTIN_newarray_float,
337                 NULL,
338                 NULL,
339                 "newarray_float",
340                 "(I)[F",
341                 NULL,
342                 NULL,
343                 NULL,
344                 NULL
345         },
346         {
347                 ICMD_NEWARRAY,
348                 BUILTINTABLE_FLAG_STUB,
349                 BUILTIN_newarray_double,
350                 NULL,
351                 NULL,
352                 "newarray_double",
353                 "(I)[D",
354                 NULL,
355                 NULL,
356                 NULL,
357                 NULL
358         },
359         {
360                 ICMD_MULTIANEWARRAY,
361                 BUILTINTABLE_FLAG_STUB,
362                 BUILTIN_multianewarray,
363                 NULL,
364                 NULL,
365                 "multianewarray",
366                 /* XXX it should be: "(ILjava/lang/Class;[I)[Ljava/lang/Object;", */
367                 "(ILjava/lang/Class;I)[Ljava/lang/Object;",
368                 NULL,
369                 NULL,
370                 NULL,
371                 NULL
372         },
373         {
374                 ICMD_CHECKCAST,
375                 0,
376                 BUILTIN_arraycheckcast,
377                 NULL,
378                 NULL,
379                 "arraycheckcast",
380                 "([Ljava/lang/Object;[Ljava/lang/Object;)[Ljava/lang/Object;",
381                 NULL,
382                 NULL,
383                 NULL,
384                 NULL
385         },
386         {
387                 ICMD_INSTANCEOF,
388                 0,
389                 BUILTIN_arrayinstanceof,
390                 NULL,
391                 NULL,
392                 "arrayinstanceof",
393                 "([Ljava/lang/Object;[Ljava/lang/Object;)I",
394                 NULL,
395                 NULL,
396                 NULL,
397                 NULL
398         },
399         {
400                 ICMD_AASTORE,
401                 0,
402                 BUILTIN_FAST_canstore,
403                 NULL,
404                 NULL,
405                 "fast-canstore",
406                 "([Ljava/lang/Object;Ljava/lang/Object;)I",
407                 NULL,
408                 NULL,
409                 NULL,
410                 NULL
411         },
412
413 #if defined(ENABLE_THREADS)
414         {
415                 ICMD_MONITORENTER,
416                 BUILTINTABLE_FLAG_STUB,
417                 LOCK_monitor_enter,
418                 NULL,
419                 NULL,
420                 "monitorenter",
421                 "(Ljava/lang/Object;)V",
422                 NULL,
423                 NULL,
424                 NULL,
425                 NULL
426         },
427         {
428                 ICMD_MONITOREXIT,
429                 BUILTINTABLE_FLAG_STUB,
430                 LOCK_monitor_exit,
431                 NULL,
432                 NULL,
433                 "monitorexit",
434                 "(Ljava/lang/Object;)V",
435                 NULL,
436                 NULL,
437                 NULL,
438                 NULL
439         },
440 #endif
441
442
443         /* stop entry */
444
445         {
446                 255,
447                 0,
448                 NULL,
449                 NULL,
450                 NULL,
451                 NULL,
452                 NULL,
453                 NULL,
454                 NULL,
455                 NULL,
456                 NULL
457         },
458 };
459
460
461 /* automatically replaced functions *******************************************/
462
463 static builtintable_entry builtintable_automatic[] = {
464
465 #if !(SUPPORT_LONG && SUPPORT_LONG_CMP)
466         {
467                 ICMD_LCMP,
468                 0,
469                 BUILTIN_lcmp,
470                 NULL,
471                 NULL,
472                 "lcmp",
473                 "(JJ)I",
474                 NULL,
475                 NULL,
476                 NULL,
477                 NULL
478         },
479 #endif
480
481 #if !(SUPPORT_LONG && SUPPORT_LONG_LOGICAL)
482         {
483                 ICMD_LAND,
484                 0,
485                 BUILTIN_land,
486                 NULL,
487                 NULL,
488                 "land",
489                 "(JJ)J",
490                 NULL,
491                 NULL,
492                 NULL,
493                 NULL
494         },
495         {
496                 ICMD_LOR,
497                 0,
498                 BUILTIN_lor,
499                 NULL,
500                 NULL,
501                 "lor",
502                 "(JJ)J",
503                 NULL,
504                 NULL,
505                 NULL,
506                 NULL
507         },
508         {
509                 ICMD_LXOR,
510                 0,
511                 BUILTIN_lxor,
512                 NULL,
513                 NULL,
514                 "lxor",
515                 "(JJ)J",
516                 NULL,
517                 NULL,
518                 NULL,
519                 NULL
520         },
521 #endif /* !(SUPPORT_LONG && SUPPORT_LONG_LOGICAL) */
522
523 #if !(SUPPORT_LONG && SUPPORT_LONG_SHIFT)
524         {
525                 ICMD_LSHL,
526                 0,
527                 BUILTIN_lshl,
528                 NULL,
529                 NULL,
530                 "lshl",
531                 "(JI)J",
532                 NULL,
533                 NULL,
534                 NULL,
535                 NULL
536         },
537         {
538                 ICMD_LSHR,
539                 0,
540                 BUILTIN_lshr,
541                 NULL,
542                 NULL,
543                 "lshr",
544                 "(JI)J",
545                 NULL,
546                 NULL,
547                 NULL,
548                 NULL
549         },
550         {
551                 ICMD_LUSHR,
552                 0,
553                 BUILTIN_lushr,
554                 NULL,
555                 NULL,
556                 "lushr",
557                 "(JI)J",
558                 NULL,
559                 NULL,
560                 NULL,
561                 NULL
562         },
563 #endif /* !(SUPPORT_LONG && SUPPORT_LONG_SHIFT) */
564
565 #if !(SUPPORT_LONG && SUPPORT_LONG_ADD)
566         {
567                 ICMD_LADD,
568                 0,
569                 BUILTIN_ladd,
570                 NULL,
571                 NULL,
572                 "ladd",
573                 "(JJ)J",
574                 NULL,
575                 NULL,
576                 NULL,
577                 NULL
578         },
579         {
580                 ICMD_LSUB,
581                 0,
582                 BUILTIN_lsub,
583                 NULL,
584                 NULL,
585                 "lsub",
586                 "(JJ)J",
587                 NULL,
588                 NULL,
589                 NULL,
590                 NULL
591         },
592         {
593                 ICMD_LNEG,
594                 0,
595                 BUILTIN_lneg,
596                 NULL,
597                 NULL,
598                 "lneg",
599                 "(J)J",
600                 NULL,
601                 NULL,
602                 NULL,
603                 NULL
604         },
605 #endif /* !(SUPPORT_LONG && SUPPORT_LONG_ADD) */
606
607 #if !(SUPPORT_LONG && SUPPORT_LONG_MUL)
608         {
609                 ICMD_LMUL,
610                 0,
611                 BUILTIN_lmul,
612                 NULL,
613                 NULL,
614                 "lmul",
615                 "(JJ)J",
616                 NULL,
617                 NULL,
618                 NULL,
619                 NULL
620         },
621 #endif
622
623 #if !(SUPPORT_FLOAT && SUPPORT_I2F)
624         {
625                 ICMD_I2F,
626                 0,
627                 BUILTIN_i2f,
628                 NULL,
629                 NULL,
630                 "i2f",
631                 "(I)F",
632                 NULL,
633                 NULL,
634                 NULL,
635                 NULL
636         },
637 #endif
638
639 #if !(SUPPORT_DOUBLE && SUPPORT_I2D)
640         {
641                 ICMD_I2D,
642                 0,
643                 BUILTIN_i2d,
644                 NULL,
645                 NULL,
646                 "i2d",
647                 "(I)D",
648                 NULL,
649                 NULL,
650                 NULL,
651                 NULL
652         },
653 #endif
654
655 #if !(SUPPORT_LONG && SUPPORT_FLOAT && SUPPORT_L2F)
656         {
657                 ICMD_L2F,
658                 0,
659                 BUILTIN_l2f,
660                 NULL,
661                 NULL,
662                 "l2f",
663                 "(J)F",
664                 NULL,
665                 NULL,
666                 NULL,
667                 NULL
668         },
669 #endif
670
671 #if !(SUPPORT_LONG && SUPPORT_DOUBLE && SUPPORT_L2D)
672         {
673                 ICMD_L2D,
674                 0,
675                 BUILTIN_l2d,
676                 NULL,
677                 NULL,
678                 "l2d",
679                 "(J)D",
680                 NULL,
681                 NULL,
682                 NULL,
683                 NULL
684         },
685 #endif
686
687 #if !(SUPPORT_FLOAT && SUPPORT_F2I)
688         {
689                 ICMD_F2I,
690                 0,
691                 BUILTIN_f2i,
692                 NULL,
693                 NULL,
694                 "f2i",
695                 "(F)I",
696                 NULL,
697                 NULL,
698                 NULL,
699                 NULL
700         },
701 #endif
702
703 #if !(SUPPORT_FLOAT && SUPPORT_LONG && SUPPORT_F2L)
704         {
705                 ICMD_F2L,
706                 0,
707                 BUILTIN_f2l,
708                 NULL,
709                 NULL,
710                 "f2l",
711                 "(F)J",
712                 NULL,
713                 NULL,
714                 NULL,
715                 NULL
716         },
717 #endif
718
719 #if !(SUPPORT_DOUBLE && SUPPORT_D2I)
720         {
721                 ICMD_D2I,
722                 0,
723                 BUILTIN_d2i,
724                 NULL,
725                 NULL,
726                 "d2i",
727                 "(D)I",
728                 NULL,
729                 NULL,
730                 NULL,
731                 NULL
732         },
733 #endif
734
735 #if !(SUPPORT_DOUBLE && SUPPORT_LONG && SUPPORT_D2L)
736         {
737                 ICMD_D2L,
738                 0,
739                 BUILTIN_d2l,
740                 NULL,
741                 NULL,
742                 "d2l",
743                 "(D)J",
744                 NULL,
745                 NULL,
746                 NULL,
747                 NULL
748         },
749 #endif
750
751
752         /* float functions ********************************************************/
753
754 #if !SUPPORT_FLOAT
755         {
756                 ICMD_FADD,
757                 0,
758                 BUILTIN_fadd,
759                 NULL,
760                 NULL,
761                 "fadd",
762                 "(FF)F",
763                 NULL,
764                 NULL,
765                 NULL,
766                 NULL
767         },
768         {
769                 ICMD_FSUB,
770                 0,
771                 BUILTIN_fsub,
772                 NULL,
773                 NULL,
774                 "fsub",
775                 "(FF)F",
776                 NULL,
777                 NULL,
778                 NULL,
779                 NULL
780         },
781         {
782                 ICMD_FMUL,
783                 0,
784                 BUILTIN_fmul,
785                 NULL,
786                 NULL,
787                 "fmul",
788                 "(FF)F",
789                 NULL,
790                 NULL,
791                 NULL,
792                 NULL
793         },
794         {
795                 ICMD_FDIV,
796                 0,
797                 BUILTIN_fdiv,
798                 NULL,
799                 NULL,
800                 "fdiv",
801                 "(FF)F",
802                 NULL,
803                 NULL,
804                 NULL,
805                 NULL
806         },
807         {
808                 ICMD_FNEG,
809                 0,
810                 BUILTIN_fneg,
811                 NULL,
812                 NULL,
813                 "fneg",
814                 "(F)F",
815                 NULL,
816                 NULL,
817                 NULL,
818                 NULL
819         },
820 #endif /* !SUPPORT_FLOAT */
821
822 #if !SUPPORT_FLOAT || !SUPPORT_FLOAT_CMP
823         {
824                 ICMD_FCMPL,
825                 0,
826                 BUILTIN_fcmpl,
827                 NULL,
828                 NULL,
829                 "fcmpl",
830                 "(FF)I",
831                 NULL,
832                 NULL,
833                 NULL,
834                 NULL
835         },
836         {
837                 ICMD_FCMPG,
838                 0,
839                 BUILTIN_fcmpg,
840                 NULL,
841                 NULL,
842                 "fcmpg",
843                 "(FF)I",
844                 NULL,
845                 NULL,
846                 NULL,
847                 NULL
848         },
849 #endif /* !SUPPORT_FLOAT || !SUPPORT_FLOAT_CMP */
850
851
852         /* double functions *******************************************************/
853
854 #if !SUPPORT_DOUBLE
855         {
856                 ICMD_DADD,
857                 0,
858                 BUILTIN_dadd,
859                 NULL,
860                 NULL,
861                 "dadd",
862                 "(DD)D",
863                 NULL,
864                 NULL,
865                 NULL,
866                 NULL
867         },
868         {
869                 ICMD_DSUB,
870                 0,
871                 BUILTIN_dsub,
872                 NULL,
873                 NULL,
874                 "dsub",
875                 "(DD)D",
876                 NULL,
877                 NULL,
878                 NULL,
879                 NULL
880         },
881         {
882                 ICMD_DMUL,
883                 0,
884                 BUILTIN_dmul,
885                 NULL,
886                 NULL,
887                 "dmul",
888                 "(DD)D",
889                 NULL,
890                 NULL,
891                 NULL,
892                 NULL
893         },
894         {
895                 ICMD_DDIV,
896                 0,
897                 BUILTIN_ddiv,
898                 NULL,
899                 NULL,
900                 "ddiv",
901                 "(DD)D",
902                 NULL,
903                 NULL,
904                 NULL,
905                 NULL
906         },
907         {
908                 ICMD_DNEG,
909                 0,
910                 BUILTIN_dneg,
911                 NULL,
912                 NULL,
913                 "dneg",
914                 "(D)D",
915                 NULL,
916                 NULL,
917                 NULL,
918                 NULL
919         },
920 #endif /* !SUPPORT_DOUBLE */
921
922 #if !SUPPORT_DOUBLE || !SUPPORT_DOUBLE_CMP
923         {
924                 ICMD_DCMPL,
925                 0,
926                 BUILTIN_dcmpl,
927                 NULL,
928                 NULL,
929                 "dcmpl",
930                 "(DD)I",
931                 NULL,
932                 NULL,
933                 NULL,
934                 NULL
935         },
936         {
937                 ICMD_DCMPG,
938                 0,
939                 BUILTIN_dcmpg,
940                 NULL,
941                 NULL,
942                 "dcmpg",
943                 "(DD)I",
944                 NULL,
945                 NULL,
946                 NULL,
947                 NULL
948         },
949 #endif /* !SUPPORT_DOUBLE || !SUPPORT_DOUBLE_CMP */
950
951
952         /* float/double functions *************************************************/
953
954 #if !(SUPPORT_FLOAT && SUPPORT_DOUBLE)
955         {
956                 ICMD_F2D,
957                 0,
958                 BUILTIN_f2d,
959                 NULL,
960                 NULL,
961                 "f2d",
962                 "(F)D",
963                 NULL,
964                 NULL,
965                 NULL,
966                 NULL
967         },
968         {
969                 ICMD_D2F,
970                 0,
971                 BUILTIN_d2f,
972                 NULL,
973                 NULL,
974                 "d2f",
975                 "(D)F",
976                 NULL,
977                 NULL,
978                 NULL,
979                 NULL
980         },
981 #endif /* !(SUPPORT_FLOAT && SUPPORT_DOUBLE) */
982
983
984         /* prevent a compiler warning if everything is supported (e.g. i386) */
985
986         {
987                 255,
988                 0,
989                 NULL,
990                 NULL,
991                 NULL,
992                 NULL,
993                 NULL,
994                 NULL,
995                 NULL,
996                 NULL,
997                 NULL
998         },
999 };
1000
1001
1002 /* automatically replaced functions *******************************************/
1003
1004 static builtintable_entry builtintable_function[] = {
1005 #if defined(ENABLE_JIT)
1006
1007         /* java.lang.VMSystem.arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V STATIC NATIVE */
1008
1009         {
1010                 ICMD_BUILTIN,
1011                 BUILTINTABLE_FLAG_STUB | BUILTINTABLE_FLAG_EXCEPTION,
1012                 BUILTIN_arraycopy,
1013                 NULL,
1014                 "java/lang/VMSystem",
1015                 "arraycopy",
1016                 "(Ljava/lang/Object;ILjava/lang/Object;II)V",
1017                 NULL,
1018                 NULL,
1019                 NULL,
1020                 NULL
1021         },
1022
1023         /* java.lang.System.arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V PUBLIC STATIC */
1024
1025 #if 0
1026         /* We disable this one until we have a fix for the stacktrace
1027            issue. */
1028
1029         {
1030                 ICMD_BUILTIN,
1031                 BUILTINTABLE_FLAG_STUB | BUILTINTABLE_FLAG_EXCEPTION,
1032                 BUILTIN_arraycopy,
1033                 NULL,
1034                 "java/lang/System",
1035                 "arraycopy",
1036                 "(Ljava/lang/Object;ILjava/lang/Object;II)V",
1037                 NULL,
1038                 NULL,
1039                 NULL,
1040                 NULL
1041         },
1042 #endif
1043
1044         /* java.lang.VMSystem.currentTimeMillis()J PUBLIC STATIC */
1045
1046         {
1047                 ICMD_BUILTIN,
1048                 0,
1049                 BUILTIN_currenttimemillis,
1050                 NULL,
1051                 "java/lang/VMSystem",
1052                 "currentTimeMillis",
1053                 "()J",
1054                 NULL,
1055                 NULL,
1056                 NULL,
1057                 NULL
1058         },
1059
1060         /* java.lang.System.currentTimeMillis()J PUBLIC STATIC */
1061
1062         {
1063                 ICMD_BUILTIN,
1064                 0,
1065                 BUILTIN_currenttimemillis,
1066                 NULL,
1067                 "java/lang/System",
1068                 "currentTimeMillis",
1069                 "()J",
1070                 NULL,
1071                 NULL,
1072                 NULL,
1073                 NULL
1074         },
1075
1076 #endif /* defined(ENABLE_JIT) */
1077
1078         /* stop entry */
1079
1080         {
1081                 255,
1082                 0,
1083                 NULL,
1084                 NULL,
1085                 NULL,
1086                 NULL,
1087                 NULL,
1088                 NULL,
1089                 NULL,
1090                 NULL,
1091                 NULL
1092         },
1093 };
1094
1095
1096 /*
1097  * These are local overrides for various environment variables in Emacs.
1098  * Please do not remove this and leave it at the end of the file, where
1099  * Emacs will automagically detect them.
1100  * ---------------------------------------------------------------------
1101  * Local variables:
1102  * mode: c
1103  * indent-tabs-mode: t
1104  * c-basic-offset: 4
1105  * tab-width: 4
1106  * End:
1107  * vim:noexpandtab:sw=4:ts=4:
1108  */