-
Notifications
You must be signed in to change notification settings - Fork 6
Layout prototype for project Panama
License
J9Java/panama-layout-prototype
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Contents of panama-layout-prototype
panama-layout-prototype
|-> com.ibm.layout.src
|-> com.ibm.layout #Layout Runtime
|-> com.ibm.layout.gen #Layout Runtime primitive array classes
|-> com.ibm.layout.ld2j #LD2J parser
|-> jni_src #JNI natives for ByteBuffer functionality
|-> com.ibm.layout.bin
|-> com.user.src
|-> com.user.examples.javaclassfile #Demo for java class file reader
|-> com.user.examples.multivla #Demo for multiVla
|-> com.user.examples.myline #Demo for adding user functionality to generated facades
|-> com.user.examples.variablelengtharray #Demo with variable length arrays
|-> com.user.examples.vlawithoperation #Demo with vla and repeat count determined by operation
|-> com.user.test #Basic testing of layout features
|-> com.user.types #Types used in tests
|-> com.user.bin
README
LICENSE
GETTING STARTED:
1) Clone this repository
2) Download Java 8 JDK (Java8 is required to run this prototype, it will not work on earlier versions) from http://www.ibm.com/developerworks/java/jdk/
3) Download ASM-5.0.X from http://forge.ow2.org/projects/asm/
4) Download junit from http://sourceforge.net/projects/junit/files/junit/4.10/
NOTE: This is only required if you want to run the Layout tests (com.user.test)
5) Set environment variable "workspaceDir" to the directory of LayoutProtoype. Place downloaded jars in $workspaceDir. If you are using eclipse add libraries to the referenced library path
COMPILING LD2J:
1) cd $workspaceDir/com.ibm.layout.src
2) javac -d $workspaceDir/com.ibm.layout.bin com/ibm/layout/ld2j/*.java
COMPILING LAYOUT RUNTIME:
1) cd $workspaceDir/com.ibm.layout.src
2) javac -cp $workspaceDir/asm-all-5.0.jar -d $workspaceDir/com.ibm.layout.bin com/ibm/layout/*.java com/ibm/layout/gen/*.java
# some versions of javac may output several warnings of this type: "warning: Unsafe is internal proprietary API and may be removed in a future release"
# these can be ignored
COMPILING EXAMPLE AND JUNIT TESTS:
1) cd $workspaceDir/com.user.src
2) javac -cp $workspaceDir/com.ibm.layout.bin:$workspaceDir/junit-4.10.jar -d $workspaceDir/com.user.bin com/user/types/*.java com/user/examples/myline/*.java com/user/examples/variablelengtharray/*.java com/user/examples/javaclassfile/*.java com/user/test/*.java
# some versions of javac may output several warnings of this type: "warning: Unsafe is internal proprietary API and may be removed in a future release"
# these can be ignored
RUNNING LD2J (myline example):
1) java -cp $workspaceDir/com.ibm.layout.bin com.ibm.layout.ld2j.Parser $workspaceDir/com.user.src/com/user/examples/myline/LD $workspaceDir/com.user.src/com/user/examples/myline/ com.user.examples.myline
output:
Struct name: Point
Variable name: x Variable type: int
Variable name: y Variable type: int
Struct name: Line
Variable name: start Variable type: Point
Variable name: end Variable type: Point
Parsing Successful!
RUNNING TESTMYLINE
This test demonstrates how to add user functionality to a generated facade. MyLine is a user defined layout.
1) java -cp $workspaceDir/com.user.bin:$workspaceDir/com.ibm.layout.bin:$workspaceDir/asm-all-5.0.jar com.user.examples.myline.TestMyLine
output:
== testMyLine ==
line: ((x: 0, y: 0)(x: 0, y: 0))
length: 0.0
line: ((x: 10, y: 11)(x: 20, y: 21))
length: 14.142135623730951
RUNNING TESTVARIABLELENGTHARRAY
This test demonstrates how to use a variable length array in Layouts.
1) java -cp $workspaceDir/com.user.bin:$workspaceDir/com.ibm.layout.bin:$workspaceDir/asm-all-5.0.jar com.user.examples.variablelengtharray.TestVariableLengthArray
output:
== testVariableLengthArray ==
lengthOfArray field is 10
length of VLArray is 10
lengthOfArray field is 5
length of VLArray is 5
RUNNING TESTJAVACLASSFILEREADER
This test demonstrates a more complex use of the variable length arrays
1) java -cp $workspaceDir/com.user.bin:$workspaceDir/com.ibm.layout.bin:$workspaceDir/asm-all-5.0.jar com.user.examples.javaclassfile.JavaClassFileReader $workspaceDir/com.user.bin/com/user/examples/javaclassfile/SampleClass.class
Sample output:
printing C:\workspaces\layout3\panama-layout-prototype\com.user.bin\com\user\examples\javaclassfile\SampleClass.class
Magic: cafebabe
Minor: 0
Major: 52
ConstantPoolCount: 97
ConstantPool:
#1 = Class #2 //com/user/examples/javaclassfile/SampleClass
#2 = Utf8 com/user/examples/javaclassfile/SampleClass
#3 = Class #4 //java/lang/Object
#4 = Utf8 java/lang/Object
#5 = Utf8 field1
#6 = Utf8 I
RUNNING JUNIT TESTS (from commandline):
1) java -cp $workspaceDir/junit-4.10.jar:$workspaceDir/asm-all-5.0.jar:$workspaceDir/com.user.bin:$workspaceDir/com.ibm.layout.bin org.junit.runner.JUnitCore com.user.test.TestLayout
Sample output:
JUnit version 4.10
..c: (x: 10, y: 20)
ca.getLength() = 10
ca[0]: (x: 0, y: 0)
ca[1]: (x: 1, y: -1)
ca[2]: (x: 2, y: -2)
ca[3]: (x: 3, y: -3)
ca[4]: (x: 4, y: -4)
ca[5]: (x: 5, y: -5)
...
IMPORTING INTO ECLIPSE:
1) File -> Import
2) General -> Existing Projects into Workspace
3) select the location of LayoutPrototype and click finish
RUNNING JUNIT TESTS (from Eclipse)
1) right click TestLayout (in /LayoutPrototype/com.user.src/com/user/test/) and select Run As -> Junit Test
COMPILING AND RUNNING WITH JNI NATIVES:
NOTE: only required if using:
LayoutType.asByteBuffer(...) or LayoutType.fromByteBuffer(...) functionality
1) cd $workspaceDir/com.ibm.layout.src/jni_src
2) export JAVA_HOME=/path/to/JDK
3) make -f makefile.lnx64
#running with JNI natives
4) Add -Djava.library.path=$workspaceDir/com.ibm.layout.src/jni_src to the VM options when launching java
About
Layout prototype for project Panama
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published