History

Added some missing native modules and stubs for java/io

Dmitry Kabak (userdima committed 13 years ago

Commit ca774701 parent 7d47bc86 files · +399 −18Browse files

Showing the changes to java/pkg (6 of 6 files). Show all

Unified · Split

6 files
  1. java/pkg/java/io/BufferedInputStream.java +34 −18
  2. java/pkg/java/io/FileSystem_L.b +47 −0
  3. java/pkg/java/io/FileSystem_L.m +13 −0
  4. java/pkg/java/io/NativeFileSystem.java +88 −0
  5. java/pkg/java/io/NativeFileSystem_L.b +174 −0
  6. java/pkg/java/io/NativeFileSystem_L.m +43 −0
java/pkg/java/io/BufferedInputStream.java+34−18
@@ -65,10 +65,13 @@ class BufferedInputStream extends FilterInputStream { · 64 unmodified lines
65 * of buf[] as primary indicator that this stream is closed. (The65 * of buf[] as primary indicator that this stream is closed. (The
66 * "in" field is also nulled out on close.)66 * "in" field is also nulled out on close.)
67 */67 */
68 private static final68 // [Inferno] <
69 AtomicReferenceFieldUpdater<BufferedInputStream, byte[]> bufUpdater =69 //private static final
70 AtomicReferenceFieldUpdater.newUpdater70 // AtomicReferenceFieldUpdater<BufferedInputStream, byte[]> bufUpdater =
71 (BufferedInputStream.class, byte[].class, "buf");71 // AtomicReferenceFieldUpdater.newUpdater
72 // (BufferedInputStream.class, byte[].class, "buf");
73 // [Inferno] =
74 // [Inferno] >
72 75
73 /**76 /**
74 * The index one greater than the index of the last valid byte in77 * The index one greater than the index of the last valid byte in
@@ -221,14 +224,19 @@ class BufferedInputStream extends FilterInputStream { · 146 unmodified lines
221 nsz = marklimit;224 nsz = marklimit;
222 byte nbuf[] = new byte[nsz];225 byte nbuf[] = new byte[nsz];
223 System.arraycopy(buffer, 0, nbuf, 0, pos);226 System.arraycopy(buffer, 0, nbuf, 0, pos);
224 if (!bufUpdater.compareAndSet(this, buffer, nbuf)) {227 // [Inferno] <
225 // Can't replace buf if there was an async close.228 //if (!bufUpdater.compareAndSet(this, buffer, nbuf)) {
226 // Note: This would need to be changed if fill()229 // // Can't replace buf if there was an async close.
227 // is ever made accessible to multiple threads.230 // // Note: This would need to be changed if fill()
228 // But for now, the only way CAS can fail is via close.231 // // is ever made accessible to multiple threads.
229 // assert buf == null;232 // // But for now, the only way CAS can fail is via close.
233 // // assert buf == null;
234 // throw new IOException("Stream closed");
235 //}
236 // [Inferno] =
237 if (buffer == null)
230 throw new IOException("Stream closed");238 throw new IOException("Stream closed");
231 }239 // [Inferno] >
232 buffer = nbuf;240 buffer = nbuf;
233 }241 }
234 count = pos;242 count = pos;
@@ -465,13 +473,21 @@ class BufferedInputStream extends FilterInputStream { · 230 unmodified lines
465 public void close() throws IOException {473 public void close() throws IOException {
466 byte[] buffer;474 byte[] buffer;
467 while ( (buffer = buf) != null) {475 while ( (buffer = buf) != null) {
468 if (bufUpdater.compareAndSet(this, buffer, null)) {476 // [Inferno] <
469 InputStream input = in;477 //if (bufUpdater.compareAndSet(this, buffer, null)) {
470 in = null;478 // InputStream input = in;
471 if (input != null)479 // in = null;
472 input.close();480 // if (input != null)
473 return;481 // input.close();
474 }482 // return;
483 //}
484 // [Inferno] =
485 InputStream input = in;
486 in = null;
487 if (input != null)
488 input.close();
489 return;
490 // [Inferno] >
475 // Else retry in case a new buf was CASed in fill()491 // Else retry in case a new buf was CASed in fill()
476 }492 }
477 }493 }
java/pkg/java/io/FileSystem_L.b+47−0
@@ -0,0 +1,47 @@
1implement FileSystem_L;
2
3include "jni.m";
4 jni : JNI;
5 ClassModule,
6 JString,
7 JArray,
8 JArrayI,
9 JArrayC,
10 JArrayB,
11 JArrayS,
12 JArrayJ,
13 JArrayF,
14 JArrayD,
15 JArrayZ,
16 JArrayJObject,
17 JArrayJClass,
18 JArrayJString,
19 JClass,
20 JObject : import jni;
21
22#>> extra pre includes here
23
24#<<
25
26include "FileSystem_L.m";
27
28#>> extra post includes here
29
30#<<
31
32init( jni_p : JNI )
33{
34 # save java native inteface mod instance
35 jni = jni_p;
36 #>>extra initialization here
37 #<<
38}
39
40getFileSystem_rFileSystem( ) : JObject
41{#>>
42 nativefs := jni->FindClass("java/io/NativeFileSystem");
43 if (nativefs == nil)
44 jni->FatalError("could not obtain NativeFileSystem class");
45 return jni->NewObject(nativefs);
46}#<<
47
java/pkg/java/io/FileSystem_L.m+13−0
@@ -0,0 +1,13 @@
1# generated file edit with care
2
3FileSystem_L : module
4{
5 FileSystem_obj : adt
6 {
7 cl_mod : ClassModule;
8 };
9
10 init : fn( jni_p : JNI );
11 getFileSystem_rFileSystem : fn( ) : JObject;
12
13};
java/pkg/java/io/NativeFileSystem.java+88−0
@@ -0,0 +1,88 @@
1package java.io;
2
3/**
4 * FileSystem implementation for Inferno vm.
5 *
6 * @author kabbi
7 */
8public class NativeFileSystem extends FileSystem {
9
10 @Override
11 public native char getSeparator();
12
13 @Override
14 public native char getPathSeparator();
15
16 @Override
17 public native String normalize(String path);
18
19 @Override
20 public native int prefixLength(String path);
21
22 @Override
23 public native String resolve(String parent, String child);
24
25 @Override
26 public native String getDefaultParent();
27
28 @Override
29 public native String fromURIPath(String path);
30
31 @Override
32 public native boolean isAbsolute(File f);
33
34 @Override
35 public native String resolve(File f);
36
37 @Override
38 public native String canonicalize(String path) throws IOException;
39
40 @Override
41 public native int getBooleanAttributes(File f);
42
43 @Override
44 public native boolean checkAccess(File f, int access);
45
46 @Override
47 public native boolean setPermission(File f, int access, boolean enable, boolean owneronly);
48
49 @Override
50 public native long getLastModifiedTime(File f);
51
52 @Override
53 public native long getLength(File f);
54
55 @Override
56 public native boolean createFileExclusively(String pathname) throws IOException;
57
58 @Override
59 public native boolean delete(File f);
60
61 @Override
62 public native String[] list(File f);
63
64 @Override
65 public native boolean createDirectory(File f);
66
67 @Override
68 public native boolean rename(File f1, File f2);
69
70 @Override
71 public native boolean setLastModifiedTime(File f, long time);
72
73 @Override
74 public native boolean setReadOnly(File f);
75
76 @Override
77 public native File[] listRoots();
78
79 @Override
80 public native long getSpace(File f, int t);
81
82 @Override
83 public native int compare(File f1, File f2);
84
85 @Override
86 public native int hashCode(File f);
87
88}
java/pkg/java/io/NativeFileSystem_L.b+174−0
@@ -0,0 +1,174 @@
1implement NativeFileSystem_L;
2
3include "jni.m";
4 jni : JNI;
5 ClassModule,
6 JString,
7 JArray,
8 JArrayI,
9 JArrayC,
10 JArrayB,
11 JArrayS,
12 JArrayJ,
13 JArrayF,
14 JArrayD,
15 JArrayZ,
16 JArrayJObject,
17 JArrayJClass,
18 JArrayJString,
19 JClass,
20 JObject : import jni;
21
22#>> extra pre includes here
23
24#<<
25
26include "NativeFileSystem_L.m";
27
28#>> extra post includes here
29
30#<<
31
32init( jni_p : JNI )
33{
34 # save java native inteface mod instance
35 jni = jni_p;
36 #>>extra initialization here
37 #<<
38}
39
40prefixLength_rString_I( this : ref NativeFileSystem_obj, p0 : JString) : int
41{#>>
42 # no prefixes in Inferno
43 return 0;
44}#<<
45
46listRoots_aFile( this : ref NativeFileSystem_obj) : JArrayJObject
47{#>>
48 # TODO: implement
49 return nil;
50}#<<
51
52normalize_rString_rString( this : ref NativeFileSystem_obj, p0 : JString) : JString
53{#>>
54 # TODO: implement
55 return p0;
56}#<<
57
58getDefaultParent_rString( this : ref NativeFileSystem_obj) : JString
59{#>>
60 # TODO: is it really so?
61 return jni->NewString("/");
62}#<<
63
64fromURIPath_rString_rString( this : ref NativeFileSystem_obj, p0 : JString) : JString
65{#>>
66 # TODO: is it really so?
67 return p0;
68}#<<
69
70getBooleanAttributes_rFile_I( this : ref NativeFileSystem_obj, p0 : File_obj) : int
71{#>>
72 return 0;
73}#<<
74
75getLastModifiedTime_rFile_J( this : ref NativeFileSystem_obj, p0 : File_obj) : big
76{#>>
77 return big 0;
78}#<<
79
80createFileExclusively_rString_Z( this : ref NativeFileSystem_obj, p0 : JString) : int
81{#>>
82 return 0;
83}#<<
84
85createDirectory_rFile_Z( this : ref NativeFileSystem_obj, p0 : File_obj) : int
86{#>>
87 return 0;
88}#<<
89
90rename_rFile_rFile_Z( this : ref NativeFileSystem_obj, p0 : File_obj,p1 : File_obj) : int
91{#>>
92 return 0;
93}#<<
94
95setLastModifiedTime_rFile_J_Z( this : ref NativeFileSystem_obj, p0 : File_obj,p1 : big) : int
96{#>>
97 return 0;
98}#<<
99
100setPermission_rFile_I_Z_Z_Z( this : ref NativeFileSystem_obj, p0 : File_obj,p1 : int,p2 : int,p3 : int) : int
101{#>>
102 return 0;
103}#<<
104
105getSpace_rFile_I_J( this : ref NativeFileSystem_obj, p0 : File_obj,p1 : int) : big
106{#>>
107 return big 0;
108}#<<
109
110getSeparator_C( this : ref NativeFileSystem_obj) : int
111{#>>
112 return '/';
113}#<<
114
115getPathSeparator_C( this : ref NativeFileSystem_obj) : int
116{#>>
117 return ':';
118}#<<
119
120hashCode_rFile_I( this : ref NativeFileSystem_obj, p0 : File_obj) : int
121{#>>
122 return 0;
123}#<<
124
125getLength_rFile_J( this : ref NativeFileSystem_obj, p0 : File_obj) : big
126{#>>
127 return big 0;
128}#<<
129
130compare_rFile_rFile_I( this : ref NativeFileSystem_obj, p0 : File_obj,p1 : File_obj) : int
131{#>>
132 return 0;
133}#<<
134
135isAbsolute_rFile_Z( this : ref NativeFileSystem_obj, p0 : File_obj) : int
136{#>>
137 return 0;
138}#<<
139
140setReadOnly_rFile_Z( this : ref NativeFileSystem_obj, p0 : File_obj) : int
141{#>>
142 return 0;
143}#<<
144
145checkAccess_rFile_I_Z( this : ref NativeFileSystem_obj, p0 : File_obj,p1 : int) : int
146{#>>
147 return 0;
148}#<<
149
150list_rFile_aString( this : ref NativeFileSystem_obj, p0 : File_obj) : JArrayJString
151{#>>
152 return nil;
153}#<<
154
155resolve_rFile_rString( this : ref NativeFileSystem_obj, p0 : File_obj) : JString
156{#>>
157 return nil;
158}#<<
159
160resolve_rString_rString_rString( this : ref NativeFileSystem_obj, p0 : JString,p1 : JString) : JString
161{#>>
162 return nil;
163}#<<
164
165canonicalize_rString_rString( this : ref NativeFileSystem_obj, p0 : JString) : JString
166{#>>
167 return nil;
168}#<<
169
170delete_rFile_Z( this : ref NativeFileSystem_obj, p0 : File_obj) : int
171{#>>
172 return 0;
173}#<<
174
java/pkg/java/io/NativeFileSystem_L.m+43−0
@@ -0,0 +1,43 @@
1# generated file edit with care
2
3NativeFileSystem_L : module
4{
5 NativeFileSystem_obj : adt
6 {
7 cl_mod : ClassModule;
8 };
9 File_obj : adt
10 {
11 cl_mod : ClassModule;
12 path: JString;
13 };
14
15 init : fn( jni_p : JNI );
16 prefixLength_rString_I : fn( this : ref NativeFileSystem_obj, p0 : JString) : int;
17 listRoots_aFile : fn( this : ref NativeFileSystem_obj) : JArrayJObject;
18 normalize_rString_rString : fn( this : ref NativeFileSystem_obj, p0 : JString) : JString;
19 getDefaultParent_rString : fn( this : ref NativeFileSystem_obj) : JString;
20 fromURIPath_rString_rString : fn( this : ref NativeFileSystem_obj, p0 : JString) : JString;
21 getBooleanAttributes_rFile_I : fn( this : ref NativeFileSystem_obj, p0 : File_obj) : int;
22 getLastModifiedTime_rFile_J : fn( this : ref NativeFileSystem_obj, p0 : File_obj) : big;
23 createFileExclusively_rString_Z : fn( this : ref NativeFileSystem_obj, p0 : JString) : int;
24 createDirectory_rFile_Z : fn( this : ref NativeFileSystem_obj, p0 : File_obj) : int;
25 rename_rFile_rFile_Z : fn( this : ref NativeFileSystem_obj, p0 : File_obj,p1 : File_obj) : int;
26 setLastModifiedTime_rFile_J_Z : fn( this : ref NativeFileSystem_obj, p0 : File_obj,p1 : big) : int;
27 setPermission_rFile_I_Z_Z_Z : fn( this : ref NativeFileSystem_obj, p0 : File_obj,p1 : int,p2 : int,p3 : int) : int;
28 getSpace_rFile_I_J : fn( this : ref NativeFileSystem_obj, p0 : File_obj,p1 : int) : big;
29 getSeparator_C : fn( this : ref NativeFileSystem_obj) : int;
30 getPathSeparator_C : fn( this : ref NativeFileSystem_obj) : int;
31 hashCode_rFile_I : fn( this : ref NativeFileSystem_obj, p0 : File_obj) : int;
32 getLength_rFile_J : fn( this : ref NativeFileSystem_obj, p0 : File_obj) : big;
33 compare_rFile_rFile_I : fn( this : ref NativeFileSystem_obj, p0 : File_obj,p1 : File_obj) : int;
34 isAbsolute_rFile_Z : fn( this : ref NativeFileSystem_obj, p0 : File_obj) : int;
35 setReadOnly_rFile_Z : fn( this : ref NativeFileSystem_obj, p0 : File_obj) : int;
36 checkAccess_rFile_I_Z : fn( this : ref NativeFileSystem_obj, p0 : File_obj,p1 : int) : int;
37 list_rFile_aString : fn( this : ref NativeFileSystem_obj, p0 : File_obj) : JArrayJString;
38 resolve_rFile_rString : fn( this : ref NativeFileSystem_obj, p0 : File_obj) : JString;
39 resolve_rString_rString_rString : fn( this : ref NativeFileSystem_obj, p0 : JString,p1 : JString) : JString;
40 canonicalize_rString_rString : fn( this : ref NativeFileSystem_obj, p0 : JString) : JString;
41 delete_rFile_Z : fn( this : ref NativeFileSystem_obj, p0 : File_obj) : int;
42
43};