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 (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
6565 * of buf[] as primary indicator that this stream is closed. (The
6666 * "in" field is also nulled out on close.)
6767 */
68− private static final
69− AtomicReferenceFieldUpdater<BufferedInputStream, byte[]> bufUpdater =
70− AtomicReferenceFieldUpdater.newUpdater
71− (BufferedInputStream.class, byte[].class, "buf");
68+ // [Inferno] <
69+ //private static final
70+ // AtomicReferenceFieldUpdater<BufferedInputStream, byte[]> bufUpdater =
71+ // AtomicReferenceFieldUpdater.newUpdater
72+ // (BufferedInputStream.class, byte[].class, "buf");
73+ // [Inferno] =
74+ // [Inferno] >
7275
7376 /**
7477 * The index one greater than the index of the last valid byte in
@@ -221,14 +224,19 @@ class BufferedInputStream extends FilterInputStream { · 146 unmodified lines
221224 nsz = marklimit;
222225 byte nbuf[] = new byte[nsz];
223226 System.arraycopy(buffer, 0, nbuf, 0, pos);
224− if (!bufUpdater.compareAndSet(this, buffer, nbuf)) {
225− // Can't replace buf if there was an async close.
226− // Note: This would need to be changed if fill()
227− // is ever made accessible to multiple threads.
228− // But for now, the only way CAS can fail is via close.
229− // assert buf == null;
227+ // [Inferno] <
228+ //if (!bufUpdater.compareAndSet(this, buffer, nbuf)) {
229+ // // Can't replace buf if there was an async close.
230+ // // Note: This would need to be changed if fill()
231+ // // is ever made accessible to multiple threads.
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)
230238 throw new IOException("Stream closed");
231− }
239+ // [Inferno] >
232240 buffer = nbuf;
233241 }
234242 count = pos;
@@ -465,13 +473,21 @@ class BufferedInputStream extends FilterInputStream { · 230 unmodified lines
465473 public void close() throws IOException {
466474 byte[] buffer;
467475 while ( (buffer = buf) != null) {
468− if (bufUpdater.compareAndSet(this, buffer, null)) {
469− InputStream input = in;
470− in = null;
471− if (input != null)
472− input.close();
473− return;
474− }
476+ // [Inferno] <
477+ //if (bufUpdater.compareAndSet(this, buffer, null)) {
478+ // InputStream input = in;
479+ // in = null;
480+ // if (input != null)
481+ // input.close();
482+ // return;
483+ //}
484+ // [Inferno] =
485+ InputStream input = in;
486+ in = null;
487+ if (input != null)
488+ input.close();
489+ return;
490+ // [Inferno] >
475491 // Else retry in case a new buf was CASed in fill()
476492 }
477493 }
java/pkg/java/io/FileSystem_L.b+47−0
@@ -0,0 +1,47 @@
1+implement FileSystem_L;
2+
3+include "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+
26+include "FileSystem_L.m";
27+
28+#>> extra post includes here
29+
30+#<<
31+
32+init( jni_p : JNI )
33+{
34+ # save java native inteface mod instance
35+ jni = jni_p;
36+ #>>extra initialization here
37+ #<<
38+}
39+
40+getFileSystem_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+
3+FileSystem_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 @@
1+package java.io;
2+
3+/**
4+ * FileSystem implementation for Inferno vm.
5+ *
6+ * @author kabbi
7+ */
8+public 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 @@
1+implement NativeFileSystem_L;
2+
3+include "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+
26+include "NativeFileSystem_L.m";
27+
28+#>> extra post includes here
29+
30+#<<
31+
32+init( jni_p : JNI )
33+{
34+ # save java native inteface mod instance
35+ jni = jni_p;
36+ #>>extra initialization here
37+ #<<
38+}
39+
40+prefixLength_rString_I( this : ref NativeFileSystem_obj, p0 : JString) : int
41+{#>>
42+ # no prefixes in Inferno
43+ return 0;
44+}#<<
45+
46+listRoots_aFile( this : ref NativeFileSystem_obj) : JArrayJObject
47+{#>>
48+ # TODO: implement
49+ return nil;
50+}#<<
51+
52+normalize_rString_rString( this : ref NativeFileSystem_obj, p0 : JString) : JString
53+{#>>
54+ # TODO: implement
55+ return p0;
56+}#<<
57+
58+getDefaultParent_rString( this : ref NativeFileSystem_obj) : JString
59+{#>>
60+ # TODO: is it really so?
61+ return jni->NewString("/");
62+}#<<
63+
64+fromURIPath_rString_rString( this : ref NativeFileSystem_obj, p0 : JString) : JString
65+{#>>
66+ # TODO: is it really so?
67+ return p0;
68+}#<<
69+
70+getBooleanAttributes_rFile_I( this : ref NativeFileSystem_obj, p0 : File_obj) : int
71+{#>>
72+ return 0;
73+}#<<
74+
75+getLastModifiedTime_rFile_J( this : ref NativeFileSystem_obj, p0 : File_obj) : big
76+{#>>
77+ return big 0;
78+}#<<
79+
80+createFileExclusively_rString_Z( this : ref NativeFileSystem_obj, p0 : JString) : int
81+{#>>
82+ return 0;
83+}#<<
84+
85+createDirectory_rFile_Z( this : ref NativeFileSystem_obj, p0 : File_obj) : int
86+{#>>
87+ return 0;
88+}#<<
89+
90+rename_rFile_rFile_Z( this : ref NativeFileSystem_obj, p0 : File_obj,p1 : File_obj) : int
91+{#>>
92+ return 0;
93+}#<<
94+
95+setLastModifiedTime_rFile_J_Z( this : ref NativeFileSystem_obj, p0 : File_obj,p1 : big) : int
96+{#>>
97+ return 0;
98+}#<<
99+
100+setPermission_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+
105+getSpace_rFile_I_J( this : ref NativeFileSystem_obj, p0 : File_obj,p1 : int) : big
106+{#>>
107+ return big 0;
108+}#<<
109+
110+getSeparator_C( this : ref NativeFileSystem_obj) : int
111+{#>>
112+ return '/';
113+}#<<
114+
115+getPathSeparator_C( this : ref NativeFileSystem_obj) : int
116+{#>>
117+ return ':';
118+}#<<
119+
120+hashCode_rFile_I( this : ref NativeFileSystem_obj, p0 : File_obj) : int
121+{#>>
122+ return 0;
123+}#<<
124+
125+getLength_rFile_J( this : ref NativeFileSystem_obj, p0 : File_obj) : big
126+{#>>
127+ return big 0;
128+}#<<
129+
130+compare_rFile_rFile_I( this : ref NativeFileSystem_obj, p0 : File_obj,p1 : File_obj) : int
131+{#>>
132+ return 0;
133+}#<<
134+
135+isAbsolute_rFile_Z( this : ref NativeFileSystem_obj, p0 : File_obj) : int
136+{#>>
137+ return 0;
138+}#<<
139+
140+setReadOnly_rFile_Z( this : ref NativeFileSystem_obj, p0 : File_obj) : int
141+{#>>
142+ return 0;
143+}#<<
144+
145+checkAccess_rFile_I_Z( this : ref NativeFileSystem_obj, p0 : File_obj,p1 : int) : int
146+{#>>
147+ return 0;
148+}#<<
149+
150+list_rFile_aString( this : ref NativeFileSystem_obj, p0 : File_obj) : JArrayJString
151+{#>>
152+ return nil;
153+}#<<
154+
155+resolve_rFile_rString( this : ref NativeFileSystem_obj, p0 : File_obj) : JString
156+{#>>
157+ return nil;
158+}#<<
159+
160+resolve_rString_rString_rString( this : ref NativeFileSystem_obj, p0 : JString,p1 : JString) : JString
161+{#>>
162+ return nil;
163+}#<<
164+
165+canonicalize_rString_rString( this : ref NativeFileSystem_obj, p0 : JString) : JString
166+{#>>
167+ return nil;
168+}#<<
169+
170+delete_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+
3+NativeFileSystem_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+};