InputFileStream
This commit is contained in:
parent
fc0d11c1e1
commit
70a11283db
1 changed files with 169 additions and 0 deletions
|
@ -41,6 +41,19 @@ impl EntryPoint {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct JavaIOFileDescriptor {}
|
||||||
|
|
||||||
|
impl JavaIOFileDescriptor {
|
||||||
|
|
||||||
|
fn get_handle(_jvm: &mut JVM) -> Result<JVMCallbackOperation, Error> {
|
||||||
|
Ok(JVMCallbackOperation::ReturnFrame(FieldValue::Long(0)))
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_append(_jvm: &mut JVM) -> Result<JVMCallbackOperation, Error> {
|
||||||
|
Ok(JVMCallbackOperation::ReturnFrame(FieldValue::Boolean(false))) // TODO: Get append
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
struct JavaLangClass {}
|
struct JavaLangClass {}
|
||||||
|
|
||||||
impl JavaLangClass {
|
impl JavaLangClass {
|
||||||
|
@ -895,6 +908,12 @@ impl JdkInternalUtilSystemPropsRaw {
|
||||||
("user.name", "java"), // TODO
|
("user.name", "java"), // TODO
|
||||||
("sun.nio.MaxDirectMemorySize", "9223372036854775807"),
|
("sun.nio.MaxDirectMemorySize", "9223372036854775807"),
|
||||||
("sun.nio.PageAlignDirectMemory", "false"),
|
("sun.nio.PageAlignDirectMemory", "false"),
|
||||||
|
("native.encoding", "UTF-8"),
|
||||||
|
("file.encoding", "UTF-8"),
|
||||||
|
("sun.jnu.encoding", "UTF-8"),
|
||||||
|
("os.name", "Unknown"),
|
||||||
|
("os.version", "Unknown"),
|
||||||
|
("os.arch", "Unknown"),
|
||||||
];
|
];
|
||||||
// TODO: Cross-Platform tmpdir
|
// TODO: Cross-Platform tmpdir
|
||||||
// TODO: locale detection
|
// TODO: locale detection
|
||||||
|
@ -3597,6 +3616,156 @@ pub fn function_for(class_name: &str, m: &crate::classfile::MethodInfo) -> Resul
|
||||||
},
|
},
|
||||||
todo_call
|
todo_call
|
||||||
),
|
),
|
||||||
|
|
||||||
|
(
|
||||||
|
"java/io/FileInputStream",
|
||||||
|
"open0",
|
||||||
|
MethodDescriptor {
|
||||||
|
argument_types: Box::new([
|
||||||
|
AbstractTypeDescription { array_level: 0, kind: AbstractTypeKind::Classname("java/lang/String".to_string())},
|
||||||
|
]),
|
||||||
|
return_type: AbstractTypeDescription { array_level: 0, kind: AbstractTypeKind::Void() },
|
||||||
|
},
|
||||||
|
todo_call
|
||||||
|
),
|
||||||
|
|
||||||
|
(
|
||||||
|
"java/io/FileInputStream",
|
||||||
|
"read0",
|
||||||
|
MethodDescriptor {
|
||||||
|
argument_types: Box::new([
|
||||||
|
]),
|
||||||
|
return_type: AbstractTypeDescription { array_level: 0, kind: AbstractTypeKind::Int() },
|
||||||
|
},
|
||||||
|
todo_call
|
||||||
|
),
|
||||||
|
|
||||||
|
(
|
||||||
|
"java/io/FileInputStream",
|
||||||
|
"readBytes",
|
||||||
|
MethodDescriptor {
|
||||||
|
argument_types: Box::new([
|
||||||
|
AbstractTypeDescription { array_level: 1, kind: AbstractTypeKind::Byte() },
|
||||||
|
AbstractTypeDescription { array_level: 0, kind: AbstractTypeKind::Int() },
|
||||||
|
AbstractTypeDescription { array_level: 0, kind: AbstractTypeKind::Int() },
|
||||||
|
]),
|
||||||
|
return_type: AbstractTypeDescription { array_level: 0, kind: AbstractTypeKind::Int() },
|
||||||
|
},
|
||||||
|
todo_call
|
||||||
|
),
|
||||||
|
|
||||||
|
(
|
||||||
|
"java/io/FileInputStream",
|
||||||
|
"length0",
|
||||||
|
MethodDescriptor {
|
||||||
|
argument_types: Box::new([
|
||||||
|
]),
|
||||||
|
return_type: AbstractTypeDescription { array_level: 0, kind: AbstractTypeKind::Long() },
|
||||||
|
},
|
||||||
|
todo_call
|
||||||
|
),
|
||||||
|
|
||||||
|
(
|
||||||
|
"java/io/FileInputStream",
|
||||||
|
"position0",
|
||||||
|
MethodDescriptor {
|
||||||
|
argument_types: Box::new([
|
||||||
|
]),
|
||||||
|
return_type: AbstractTypeDescription { array_level: 0, kind: AbstractTypeKind::Long() },
|
||||||
|
},
|
||||||
|
todo_call
|
||||||
|
),
|
||||||
|
|
||||||
|
(
|
||||||
|
"java/io/FileInputStream",
|
||||||
|
"skip0",
|
||||||
|
MethodDescriptor {
|
||||||
|
argument_types: Box::new([
|
||||||
|
AbstractTypeDescription { array_level: 0, kind: AbstractTypeKind::Long() },
|
||||||
|
]),
|
||||||
|
return_type: AbstractTypeDescription { array_level: 0, kind: AbstractTypeKind::Long() },
|
||||||
|
},
|
||||||
|
todo_call
|
||||||
|
),
|
||||||
|
|
||||||
|
(
|
||||||
|
"java/io/FileInputStream",
|
||||||
|
"available0",
|
||||||
|
MethodDescriptor {
|
||||||
|
argument_types: Box::new([
|
||||||
|
]),
|
||||||
|
return_type: AbstractTypeDescription { array_level: 0, kind: AbstractTypeKind::Int() },
|
||||||
|
},
|
||||||
|
todo_call
|
||||||
|
),
|
||||||
|
|
||||||
|
(
|
||||||
|
"java/io/FileInputStream",
|
||||||
|
"initIDs",
|
||||||
|
MethodDescriptor {
|
||||||
|
argument_types: Box::new([
|
||||||
|
]),
|
||||||
|
return_type: AbstractTypeDescription { array_level: 0, kind: AbstractTypeKind::Void() },
|
||||||
|
},
|
||||||
|
ignore_call
|
||||||
|
),
|
||||||
|
|
||||||
|
(
|
||||||
|
"java/io/FileDescriptor",
|
||||||
|
"sync0",
|
||||||
|
MethodDescriptor {
|
||||||
|
argument_types: Box::new([
|
||||||
|
]),
|
||||||
|
return_type: AbstractTypeDescription { array_level: 0, kind: AbstractTypeKind::Void() },
|
||||||
|
},
|
||||||
|
todo_call
|
||||||
|
),
|
||||||
|
|
||||||
|
(
|
||||||
|
"java/io/FileDescriptor",
|
||||||
|
"initIDs",
|
||||||
|
MethodDescriptor {
|
||||||
|
argument_types: Box::new([
|
||||||
|
]),
|
||||||
|
return_type: AbstractTypeDescription { array_level: 0, kind: AbstractTypeKind::Void() },
|
||||||
|
},
|
||||||
|
ignore_call
|
||||||
|
),
|
||||||
|
|
||||||
|
(
|
||||||
|
"java/io/FileDescriptor",
|
||||||
|
"getHandle",
|
||||||
|
MethodDescriptor {
|
||||||
|
argument_types: Box::new([
|
||||||
|
AbstractTypeDescription { array_level: 0, kind: AbstractTypeKind::Int() },
|
||||||
|
]),
|
||||||
|
return_type: AbstractTypeDescription { array_level: 0, kind: AbstractTypeKind::Long() },
|
||||||
|
},
|
||||||
|
JavaIOFileDescriptor::get_handle
|
||||||
|
),
|
||||||
|
|
||||||
|
(
|
||||||
|
"java/io/FileDescriptor",
|
||||||
|
"getAppend",
|
||||||
|
MethodDescriptor {
|
||||||
|
argument_types: Box::new([
|
||||||
|
AbstractTypeDescription { array_level: 0, kind: AbstractTypeKind::Int() },
|
||||||
|
]),
|
||||||
|
return_type: AbstractTypeDescription { array_level: 0, kind: AbstractTypeKind::Boolean() },
|
||||||
|
},
|
||||||
|
JavaIOFileDescriptor::get_append
|
||||||
|
),
|
||||||
|
|
||||||
|
(
|
||||||
|
"java/io/FileDescriptor",
|
||||||
|
"close0",
|
||||||
|
MethodDescriptor {
|
||||||
|
argument_types: Box::new([
|
||||||
|
]),
|
||||||
|
return_type: AbstractTypeDescription { array_level: 0, kind: AbstractTypeKind::Void() },
|
||||||
|
},
|
||||||
|
todo_call
|
||||||
|
),
|
||||||
];
|
];
|
||||||
|
|
||||||
for (classname, methodname, methoddescriptor, binding) in native_mappings {
|
for (classname, methodname, methoddescriptor, binding) in native_mappings {
|
||||||
|
|
Loading…
Reference in a new issue