Skip to content

Commit

Permalink
Re-factored JVM code so now files are (almost) nicely split by platform.
Browse files Browse the repository at this point in the history
  • Loading branch information
mzattera committed Nov 1, 2020
1 parent 588c330 commit aefcc7d
Show file tree
Hide file tree
Showing 52 changed files with 917 additions and 801 deletions.
2 changes: 1 addition & 1 deletion README.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ dev
Chossing "Import existing Eclipse project" will find all Eclipse project that are relevant.

dev\test
Contains


distr
by contrast, all that must be released is here, including source files.
2 changes: 1 addition & 1 deletion dev/README.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
VS
This is VisualStudio solution that allows 1) building the JVM and executng it as a Console application;
this helps debugging a lot. 2) build util files. Particularly, veriy_struct.c makes sure lenght of Java structures is as needed in order not to crash the JVM.
this helps debugging a lot. 2) build util files. Particularly, verify_struct.c makes sure lenght of Java structures is as needed in order not to crash the JVM.

test
Some Java sources to test the JVM.
15 changes: 9 additions & 6 deletions dev/VS/VS.sln
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,8 @@ Global
{3521F9EA-C667-4044-B816-8D484BA3E3C3}.Release|Any CPU.ActiveCfg = Release|Win32
{3521F9EA-C667-4044-B816-8D484BA3E3C3}.Release|x64.ActiveCfg = Release|x64
{3521F9EA-C667-4044-B816-8D484BA3E3C3}.Release|x64.Build.0 = Release|x64
{3521F9EA-C667-4044-B816-8D484BA3E3C3}.Release|x86.ActiveCfg = Release|Win32
{3521F9EA-C667-4044-B816-8D484BA3E3C3}.Release|x86.Build.0 = Release|Win32
{3521F9EA-C667-4044-B816-8D484BA3E3C3}.Release|x86.ActiveCfg = Debug|Win32
{3521F9EA-C667-4044-B816-8D484BA3E3C3}.Release|x86.Build.0 = Debug|Win32
{A283F4C3-BB0F-43E3-81E2-A8139A3C7960}.Debug|Any CPU.ActiveCfg = Debug|Win32
{A283F4C3-BB0F-43E3-81E2-A8139A3C7960}.Debug|x64.ActiveCfg = Debug|x64
{A283F4C3-BB0F-43E3-81E2-A8139A3C7960}.Debug|x64.Build.0 = Debug|x64
Expand All @@ -74,8 +74,8 @@ Global
{A283F4C3-BB0F-43E3-81E2-A8139A3C7960}.Release|Any CPU.ActiveCfg = Release|Win32
{A283F4C3-BB0F-43E3-81E2-A8139A3C7960}.Release|x64.ActiveCfg = Release|x64
{A283F4C3-BB0F-43E3-81E2-A8139A3C7960}.Release|x64.Build.0 = Release|x64
{A283F4C3-BB0F-43E3-81E2-A8139A3C7960}.Release|x86.ActiveCfg = Release|Win32
{A283F4C3-BB0F-43E3-81E2-A8139A3C7960}.Release|x86.Build.0 = Release|Win32
{A283F4C3-BB0F-43E3-81E2-A8139A3C7960}.Release|x86.ActiveCfg = Debug|Win32
{A283F4C3-BB0F-43E3-81E2-A8139A3C7960}.Release|x86.Build.0 = Debug|Win32
{9A136C9D-FE57-4333-BA27-BB8E5C910A7C}.Debug|Any CPU.ActiveCfg = Debug|Win32
{9A136C9D-FE57-4333-BA27-BB8E5C910A7C}.Debug|x64.ActiveCfg = Debug|x64
{9A136C9D-FE57-4333-BA27-BB8E5C910A7C}.Debug|x64.Build.0 = Debug|x64
Expand All @@ -84,8 +84,8 @@ Global
{9A136C9D-FE57-4333-BA27-BB8E5C910A7C}.Release|Any CPU.ActiveCfg = Release|Win32
{9A136C9D-FE57-4333-BA27-BB8E5C910A7C}.Release|x64.ActiveCfg = Release|x64
{9A136C9D-FE57-4333-BA27-BB8E5C910A7C}.Release|x64.Build.0 = Release|x64
{9A136C9D-FE57-4333-BA27-BB8E5C910A7C}.Release|x86.ActiveCfg = Release|Win32
{9A136C9D-FE57-4333-BA27-BB8E5C910A7C}.Release|x86.Build.0 = Release|Win32
{9A136C9D-FE57-4333-BA27-BB8E5C910A7C}.Release|x86.ActiveCfg = Debug|Win32
{9A136C9D-FE57-4333-BA27-BB8E5C910A7C}.Release|x86.Build.0 = Debug|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand All @@ -96,4 +96,7 @@ Global
{8DF87B3F-E735-4503-827E-5A77BBE163D6} = {F6061B03-D731-4C63-B5A0-D831A7C03D8C}
{ABE9FDAF-19B3-4F8F-8F9A-35138B649D7D} = {F6061B03-D731-4C63-B5A0-D831A7C03D8C}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {290EC9E9-DD83-40C7-91DA-209D6F652EE1}
EndGlobalSection
EndGlobal
4 changes: 4 additions & 0 deletions dev/VS/ascii/ascii.vcxproj.user
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup />
</Project>
31 changes: 18 additions & 13 deletions dev/VS/b2fJ-c64/b2fJ-c64.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
<Keyword>Win32Proj</Keyword>
<RootNamespace>b2fJc64</RootNamespace>
<WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
<ProjectName>b2fJ-win</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
Expand Down Expand Up @@ -71,13 +72,14 @@
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
<IncludePath>I:\leJOS_Toolchain\b2fJ\distr\src\platform\c64;I:\leJOS_Toolchain\b2fJ\distr\src\javavm;$(IncludePath)</IncludePath>
<IncludePath>$(SolutionDir)..\..\distr\src\javavm;$(SolutionDir)..\..\distr\src\util;$(SolutionDir)..\..\distr\src\platform\win;$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
<IncludePath>$(SolutionDir)..\..\distr\src\javavm;$(SolutionDir)..\..\distr\src\util;$(SolutionDir)..\..\distr\src\platform\win;$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
Expand All @@ -90,6 +92,7 @@
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
Expand Down Expand Up @@ -120,6 +123,7 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
Expand Down Expand Up @@ -168,37 +172,38 @@
<ClInclude Include="..\..\..\distr\src\javavm\exceptions.h" />
<ClInclude Include="..\..\..\distr\src\javavm\fields.h" />
<ClInclude Include="..\..\..\distr\src\javavm\interpreter.h" />
<ClInclude Include="..\..\..\distr\src\javavm\types.h" />
<ClInclude Include="..\..\..\distr\src\javavm\language.h" />
<ClInclude Include="..\..\..\distr\src\javavm\limits.h" />
<ClInclude Include="..\..\..\distr\src\javavm\load.h" />
<ClInclude Include="..\..\..\distr\src\javavm\memory.h" />
<ClInclude Include="..\..\..\distr\src\javavm\mydebug.h" />
<ClInclude Include="..\..\..\distr\src\javavm\debug.h" />
<ClInclude Include="..\..\..\distr\src\javavm\opcodes.h" />
<ClInclude Include="..\..\..\distr\src\javavm\specialclasses.h" />
<ClInclude Include="..\..\..\distr\src\javavm\specialsignatures.h" />
<ClInclude Include="..\..\..\distr\src\javavm\stack.h" />
<ClInclude Include="..\..\..\distr\src\javavm\threads.h" />
<ClInclude Include="..\..\..\distr\src\javavm\trace.h" />
<ClInclude Include="..\..\..\distr\src\javavm\types.h" />
<ClInclude Include="..\..\..\distr\src\javavm\tvmemul.h" />
<ClInclude Include="..\..\..\distr\src\javavm\version.h" />
<ClInclude Include="..\..\..\distr\src\platform\c64\compiler_config.h" />
<ClInclude Include="..\..\..\distr\src\platform\c64\java_code.h" />
<ClInclude Include="..\..\..\distr\src\platform\c64\load.h" />
<ClInclude Include="..\..\..\distr\src\platform\c64\platform_config.h" />
<ClInclude Include="..\..\..\distr\src\platform\c64\platform_hooks.h" />
<ClInclude Include="..\..\..\distr\src\platform\c64\platform_txt.h" />
<ClInclude Include="..\..\..\distr\src\platform\win\compiler_config.h" />
<ClInclude Include="..\..\..\distr\src\platform\win\platform_config.h" />
<ClInclude Include="..\..\..\distr\src\platform\win\platform_hooks.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\distr\src\javavm\exceptions.c" />
<ClCompile Include="..\..\..\distr\src\javavm\interpreter.c" />
<ClCompile Include="..\..\..\distr\src\javavm\language.c" />
<ClCompile Include="..\..\..\distr\src\javavm\memory.c" />
<ClCompile Include="..\..\..\distr\src\javavm\mydebug.c" />
<ClCompile Include="..\..\..\distr\src\javavm\nativeemul.c" />
<ClCompile Include="..\..\..\distr\src\javavm\threads.c" />
<ClCompile Include="..\..\..\distr\src\platform\c64\load.c" />
<ClCompile Include="..\..\..\distr\src\platform\c64\nativeemul.c" />
<ClCompile Include="..\..\..\distr\src\platform\c64\platform_txt.c" />
<ClCompile Include="..\..\..\distr\src\platform\c64\traceemul.c" />
<ClCompile Include="..\..\..\distr\src\platform\c64\tvmemul.c" />
<ClCompile Include="..\..\..\distr\src\javavm\traceemul.c" />
<ClCompile Include="..\..\..\distr\src\javavm\tvmemul.c" />
<ClCompile Include="..\..\..\distr\src\platform\win\load.c" />
<ClCompile Include="..\..\..\distr\src\platform\win\main.c" />
<ClCompile Include="..\..\..\distr\src\platform\win\platform_native.c" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
Expand Down
33 changes: 18 additions & 15 deletions dev/VS/b2fJ-c64/b2fJ-c64.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,6 @@
<ClInclude Include="..\..\..\distr\src\javavm\memory.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\distr\src\javavm\mydebug.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\distr\src\javavm\opcodes.h">
<Filter>Header Files</Filter>
</ClInclude>
Expand All @@ -104,28 +101,31 @@
<ClInclude Include="..\..\..\distr\src\javavm\trace.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\distr\src\javavm\types.h">
<ClInclude Include="..\..\..\distr\src\javavm\version.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\distr\src\javavm\load.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\distr\src\platform\c64\compiler_config.h">
<ClInclude Include="..\..\..\distr\src\javavm\tvmemul.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\distr\src\platform\c64\java_code.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\distr\src\platform\c64\load.h">
<ClInclude Include="..\..\..\distr\src\platform\win\compiler_config.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\distr\src\platform\c64\platform_config.h">
<ClInclude Include="..\..\..\distr\src\platform\win\platform_config.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\distr\src\platform\c64\platform_hooks.h">
<ClInclude Include="..\..\..\distr\src\platform\win\platform_hooks.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\distr\src\platform\c64\platform_txt.h">
<ClInclude Include="..\..\..\distr\src\javavm\types.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\distr\src\javavm\version.h">
<ClInclude Include="..\..\..\distr\src\javavm\debug.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
Expand All @@ -148,19 +148,22 @@
<ClCompile Include="..\..\..\distr\src\javavm\threads.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\distr\src\platform\c64\load.c">
<ClCompile Include="..\..\..\distr\src\javavm\nativeemul.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\distr\src\javavm\traceemul.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\distr\src\platform\c64\nativeemul.c">
<ClCompile Include="..\..\..\distr\src\javavm\tvmemul.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\distr\src\platform\c64\platform_txt.c">
<ClCompile Include="..\..\..\distr\src\platform\win\platform_native.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\distr\src\platform\c64\traceemul.c">
<ClCompile Include="..\..\..\distr\src\platform\win\load.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\distr\src\platform\c64\tvmemul.c">
<ClCompile Include="..\..\..\distr\src\platform\win\main.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
Expand Down
4 changes: 4 additions & 0 deletions dev/VS/b2fJ-c64/b2fJ-c64.vcxproj.user
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup />
</Project>
9 changes: 5 additions & 4 deletions dev/VS/util/util.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\distr\src\util\verify_struct.c" />
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{A283F4C3-BB0F-43E3-81E2-A8139A3C7960}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
Expand Down Expand Up @@ -71,13 +74,14 @@
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
<IncludePath>I:\leJOS_Toolchain\b2fJ\distr\src\jvm\platform\c64;I:\leJOS_Toolchain\b2fJ\distr\src\javavm;$(IncludePath)</IncludePath>
<IncludePath>$(SolutionDir)..\..\distr\src\javavm;$(SolutionDir)..\..\distr\src\util;$(SolutionDir)..\..\distr\src\platform\win;$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
<IncludePath>$(SolutionDir)..\..\distr\src\javavm;$(SolutionDir)..\..\distr\src\util;$(SolutionDir)..\..\distr\src\platform\win;$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
Expand Down Expand Up @@ -146,9 +150,6 @@
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\..\distr\src\jvm\util\verify_struct.c" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
Expand Down
2 changes: 1 addition & 1 deletion dev/VS/util/util.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\distr\src\jvm\util\verify_struct.c">
<ClCompile Include="..\..\..\distr\src\util\verify_struct.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
Expand Down
4 changes: 4 additions & 0 deletions dev/VS/util/util.vcxproj.user
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup />
</Project>
36 changes: 21 additions & 15 deletions distr/bin/makeJVM.bat
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ set "B2FJ_HOME=%~dp0.."
@echo Cleaning up:
@echo.

if exist *.prg del /S /Q /F javavm\*.o

rem moves into C source folder, this saves us from issues with spaces in folder names and cc65
set "CURRENT_FOLDER=%CD%"
cd "%B2FJ_HOME%\src"
Expand All @@ -23,18 +25,20 @@ rmdir /S /Q %BUILD_HOME%
mkdir %BUILD_HOME%

rem Remove old .o files
del /S /Q /F javavm\*.o
del /S /Q /F platform\c64\*.o
del /S /Q /F util\*.o
if exist javavm\*.o del /S /Q /F javavm\*.o
if exist platform\c64\*.o del /S /Q /F platform\c64\*.o
if exist util\*.o del /S /Q /F util\*.o

@echo.
@echo Compiling JVM:
@echo.

set "CC=..\redistr\cc65\bin\cl65"
set "CC_PARAMS=-c -t c64 -I .\javavm -I .\platform\c64 -I .\util -O -Or -r --codesize 100"
set "CC_PARAMS=-c -t c64 -I .\javavm -I .\platform\c64 -I .\util -Oi "
set "CC_CLI=%CC% %CC_PARAMS%"

echo on

%CC_CLI% javavm\exceptions.c
if ERRORLEVEL 1 goto end
%CC_CLI% javavm\interpreter.c
Expand All @@ -47,17 +51,18 @@ if ERRORLEVEL 1 goto end
if ERRORLEVEL 1 goto end
%CC_CLI% javavm\mydebug.c
if ERRORLEVEL 1 goto end

%CC_CLI% platform\c64\load.c
if ERRORLEVEL 1 goto end
%CC_CLI% platform\c64\nativeemul.c
%CC_CLI% javavm\nativeemul.c
if ERRORLEVEL 1 goto end
%CC_CLI% platform\c64\traceemul.c
%CC_CLI% javavm\traceemul.c
if ERRORLEVEL 1 goto end
%CC_CLI% platform\c64\tvmemul.c
%CC_CLI% javavm\tvmemul.c
if ERRORLEVEL 1 goto end

%CC_CLI% util\verify_struct.c
%CC_CLI% platform\c64\load.c
if ERRORLEVEL 1 goto end
%CC_CLI% platform\c64\platform_native.c
if ERRORLEVEL 1 goto end
%CC_CLI% platform\c64\main.c
if ERRORLEVEL 1 goto end

move /Y javavm\*.o %BUILD_HOME%
Expand All @@ -75,10 +80,11 @@ set "CL_PARAMS="
set "CL_CLI=%CL% %CL_PARAMS%"

@echo Linking btfJ.prg
%CL_CLI% -t c64 -o b2fJ.prg exceptions.o interpreter.o language.o load.o memory.o mydebug.o nativeemul.o threads.o traceemul.o tvmemul.o c64.lib

rem @echo Linking utilities
rem %CL_CLI% -t c64 -o verify_struct.prg verify_struct.o c64.lib
%CL_CLI% -t c64 -o b2fJ.prg exceptions.o interpreter.o language.o load.o main.o memory.o mydebug.o nativeemul.o platform_native.o threads.o traceemul.o tvmemul.o c64.lib
@if not exist b2fJ.prg (
echo Some compilation error happened.
goto end
)

rem moves back all prg files into original folder and goes back there
@echo Copying binaries
Expand Down
2 changes: 1 addition & 1 deletion distr/redistr/README.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Here you can find tools that are merely re-distributed.
See LICENSE.md for details.

* cc65 is snapshot downloaded on Oct. 18th, 2020.
* cc65 is snapshot downloaded on Oct. 31st, 2020.
* WinVice is version 3.4.
* lib version are shown in file names.

Loading

0 comments on commit aefcc7d

Please sign in to comment.