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