Changeset 181
- Timestamp:
- 03/01/07 20:01:18 (2 years ago)
- Files:
-
- branches/jni/src/dejavu/dejavu/Intern.d (modified) (7 diffs)
- branches/jni/src/dejavu/dejavu/lang/Class.d (modified) (1 diff)
- branches/jni/src/dejavu/dejavu/lang/reflect/Method.d (modified) (2 diffs)
- branches/jni/src/tioport/de/tionex/port/Refactorings.d (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/jni/src/dejavu/dejavu/Intern.d
r180 r181 505 505 case "with": 506 506 case "sizeof": 507 case "mangleof ":507 case "mangleof": 508 508 //Stdout.formatln( "escape {0} in {1}", name, mModule.getFqn() ); 509 509 return(name ~ "_KEYWORDESCAPE"); 510 510 511 case "length": 512 return(name ~ "_ESCAPE"); 511 513 default: 512 514 //Stdout.formatln( "non-escape {0} in {1}", name, mModule.getFqn() ); … … 520 522 String strSig = String.fromUtf8( fromUtf8z( sig )); 521 523 Field fld = clazzObj.findField( strName, strSig, aStatic ); 524 if( fld is null ){ 525 fld = clazzObj.findField( new String( "fld_" ) ~ strName, strSig, aStatic ); 526 } 522 527 assert( fld !is null, Layouter( "{} {} {}", clazzObj.getName().toUtf8, strName.toUtf8, strSig.toUtf8 )); 523 528 if( !fld ) return null; … … 613 618 } 614 619 jthrowable ExceptionOccurred (JNIEnv *env){ 615 assert( false, "implementation missing");620 //assert( false, "implementation missing"); 616 621 return null; 617 622 } … … 766 771 } 767 772 jint CallIntMethodV (JNIEnv *env, jobject obj, jmethodID methodID, va_list args){ 768 assert( false, "implementation missing"); 773 Method mth = cast(Method)cast(JObject)methodID; 774 char[] signature = mth.getSignature().toUtf8(); 775 JObjectImpl dobj = cast(JObjectImpl)cast(JObject)obj; 776 777 778 switch( signature ){ 779 case "": 780 { 781 alias int function( JObjectImpl ) F; 782 F fptr = cast(F) mth.getSlot(); 783 return fptr( dobj ); 784 } 785 case "I": 786 { 787 alias int function( JObjectImpl, int) F; 788 F fptr = cast(F) mth.getSlot(); 789 int a0 = va_arg!(int)(args); 790 return fptr( dobj, a0 ); 791 } 792 case "II": 793 { 794 alias int function(JObjectImpl, int,int) F; 795 F fptr = cast(F) mth.getSlot(); 796 int a0 = va_arg!(int)(args); 797 int a1 = va_arg!(int)(args); 798 return fptr( dobj, a0, a1 ); 799 } 800 case "III": 801 { 802 alias int function(JObjectImpl, int,int,int) F; 803 F fptr = cast(F) mth.getSlot(); 804 int a0 = va_arg!(int)(args); 805 int a1 = va_arg!(int)(args); 806 int a2 = va_arg!(int)(args); 807 return fptr( dobj, a0, a1, a2 ); 808 } 809 case "IIII": 810 { 811 alias int function(JObjectImpl, int,int,int,int) F; 812 F fptr = cast(F) mth.getSlot(); 813 int a0 = va_arg!(int)(args); 814 int a1 = va_arg!(int)(args); 815 int a2 = va_arg!(int)(args); 816 int a3 = va_arg!(int)(args); 817 return fptr( dobj, a0, a1, a2, a3 ); 818 } 819 case "IIIII": 820 { 821 alias int function(JObjectImpl,int,int,int,int,int) F; 822 F fptr = cast(F) mth.getSlot(); 823 int a0 = va_arg!(int)(args); 824 int a1 = va_arg!(int)(args); 825 int a2 = va_arg!(int)(args); 826 int a3 = va_arg!(int)(args); 827 int a4 = va_arg!(int)(args); 828 return fptr( dobj, a0, a1, a2, a3, a4 ); 829 } 830 case "IIIIII": 831 default: 832 Stdout.formatln( "call {} -> {} {}", dobj.classinfo.name, mth.getName().toUtf8, signature ); 833 assert( false ); 834 } 769 835 return 0; 770 836 } … … 1085 1151 } 1086 1152 jint CallStaticIntMethodV (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args){ 1087 assert( false, "implementation missing"); 1153 Method mth = cast(Method)cast(JObject)methodID; 1154 Class cls = cast(Class)cast(JObject)clazz; 1155 char[] signature = mth.getSignature().toUtf8(); 1156 1157 1158 switch( signature ){ 1159 case "": 1160 { 1161 alias int function() F; 1162 F fptr = cast(F) mth.getSlot(); 1163 return fptr(); 1164 } 1165 case "I": 1166 { 1167 alias int function(int) F; 1168 F fptr = cast(F) mth.getSlot(); 1169 int a0 = va_arg!(int)(args); 1170 return fptr( a0 ); 1171 } 1172 case "II": 1173 { 1174 alias int function(int,int) F; 1175 F fptr = cast(F) mth.getSlot(); 1176 int a0 = va_arg!(int)(args); 1177 int a1 = va_arg!(int)(args); 1178 return fptr( a0, a1 ); 1179 } 1180 case "III": 1181 case "IIII": 1182 case "IIIII": 1183 case "IIIIII": 1184 default: 1185 Stdout.formatln( "call static {} -> {} {}", cls.toUtf8, mth.getName().toUtf8, signature ); 1186 assert( false ); 1187 } 1088 1188 return 0; 1089 1189 } … … 1466 1566 jint AttachCurrentThread(JavaVM *vm, void **penv, void *args){ 1467 1567 //assert( false, "implementation missing"); 1568 *penv = JNIenv.getJniEnv(); 1569 //Stdout.formatln( "AttachCurrentThread()" ); 1468 1570 return 0; 1469 1571 } … … 1475 1577 1476 1578 jint GetEnv(JavaVM *vm, void **penv, jint version_){ 1477 *penv = & JNIenv.jni_env; 1579 *penv = JNIenv.getJniEnv(); 1580 //Stdout.formatln( "GetEnv()" ); 1478 1581 return 0; 1479 1582 } branches/jni/src/dejavu/dejavu/lang/Class.d
r180 r181 92 92 public Field findField( String aName, String aSig, bool aStatic ){ 93 93 Field res = null; 94 foreach( Field fld; mFields ){ 95 if( fld.matches( aName, aSig, aStatic )){ 96 if( res !is null ){ 97 return null; // multiple matches 98 } 99 res = fld; 100 } 101 } 94 void searchIn( Class clazz ){ 95 foreach( Field fld; clazz.mFields ){ 96 if( fld.matches( aName, aSig, aStatic )){ 97 if( res !is null ){ 98 Stdout.formatln( "class {} has {} more than once", clazz.mCi.name, aName ); 99 break; 100 } 101 res = fld; 102 } 103 } 104 } 105 106 Class cur = this; 107 do{ 108 if( cur !is this ){ 109 //Stdout.formatln( "findField in {}", cur.mCi.name ); 110 } 111 searchIn( cur ); 112 ClassInfo base = cur.mCi.base; 113 if( base !is null && res is null ){ 114 if( !( base.name in sInstances )){ 115 Stdout.formatln( "{} not found", base.name ); 116 cur = null; 117 } 118 else{ 119 cur = sInstances[ cur.mCi.base.name ]; 120 } 121 } 122 }while( cur !is null && res is null ); 123 102 124 return res; 103 125 } branches/jni/src/dejavu/dejavu/lang/reflect/Method.d
r175 r181 71 71 } 72 72 73 public int getSlot(){ 74 return slot; 75 } 76 73 77 public dejavu.lang.reflect.Method.Method copy(){ 74 78 assert( false, "implementation missing"); … … 86 90 public int getModifiers(){ 87 91 return modifiers; 92 } 93 94 public dejavu.lang.String.String getSignature(){ 95 return signature; 88 96 } 89 97 branches/jni/src/tioport/de/tionex/port/Refactorings.d
r180 r181 573 573 case "with": 574 574 case "sizeof": 575 case "mangleof ":575 case "mangleof": 576 576 //Stdout.formatln( "escape {0} in {1}", name, mModule.getFqn() ); 577 577 return(name ~ "_KEYWORDESCAPE");
