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