Optimize compile time
This commit is contained in:
parent
3377ac04fc
commit
f8f81f6d4c
|
@ -8100,8 +8100,8 @@ void InterCodeBasicBlock::BuildConstTempSets(void)
|
|||
{
|
||||
mVisited = true;
|
||||
|
||||
mEntryConstTemp = NumberSet(mEntryRequiredTemps.Size());
|
||||
mExitConstTemp = NumberSet(mEntryRequiredTemps.Size());
|
||||
mEntryConstTemp.Reset(mEntryRequiredTemps.Size());
|
||||
mExitConstTemp.Reset(mEntryRequiredTemps.Size());
|
||||
|
||||
for (i = 0; i < mInstructions.Size(); i++)
|
||||
{
|
||||
|
@ -8594,18 +8594,20 @@ bool InterCodeBasicBlock::BuildGlobalRequiredTempSet(NumberSet& fromRequiredTemp
|
|||
{
|
||||
mVisited = true;
|
||||
|
||||
NumberSet newRequiredTemps(mExitRequiredTemps);
|
||||
mNewRequiredTemps = mExitRequiredTemps;
|
||||
|
||||
if (mTrueJump && mTrueJump->BuildGlobalRequiredTempSet(newRequiredTemps)) revisit = true;
|
||||
if (mFalseJump && mFalseJump->BuildGlobalRequiredTempSet(newRequiredTemps)) revisit = true;
|
||||
// NumberSet newRequiredTemps(mExitRequiredTemps);
|
||||
|
||||
if (!(newRequiredTemps <= mExitRequiredTemps))
|
||||
if (mTrueJump && mTrueJump->BuildGlobalRequiredTempSet(mNewRequiredTemps)) revisit = true;
|
||||
if (mFalseJump && mFalseJump->BuildGlobalRequiredTempSet(mNewRequiredTemps)) revisit = true;
|
||||
|
||||
if (!(mNewRequiredTemps <= mExitRequiredTemps))
|
||||
{
|
||||
revisit = true;
|
||||
|
||||
mExitRequiredTemps = newRequiredTemps;
|
||||
newRequiredTemps -= mLocalProvidedTemps;
|
||||
mEntryRequiredTemps |= newRequiredTemps;
|
||||
mExitRequiredTemps = mNewRequiredTemps;
|
||||
mNewRequiredTemps -= mLocalProvidedTemps;
|
||||
mEntryRequiredTemps |= mNewRequiredTemps;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -8716,13 +8718,13 @@ void InterCodeBasicBlock::BuildStaticVariableSet(const GrowingVariableArray& sta
|
|||
{
|
||||
mVisited = true;
|
||||
|
||||
mLocalRequiredStatics = NumberSet(staticVars.Size());
|
||||
mLocalProvidedStatics = NumberSet(staticVars.Size());
|
||||
mLocalRequiredStatics.Reset(staticVars.Size());
|
||||
mLocalProvidedStatics.Reset(staticVars.Size());
|
||||
|
||||
mEntryRequiredStatics = NumberSet(staticVars.Size());
|
||||
mEntryProvidedStatics = NumberSet(staticVars.Size());
|
||||
mExitRequiredStatics = NumberSet(staticVars.Size());
|
||||
mExitProvidedStatics = NumberSet(staticVars.Size());
|
||||
mEntryRequiredStatics.Reset(staticVars.Size());
|
||||
mEntryProvidedStatics.Reset(staticVars.Size());
|
||||
mExitRequiredStatics.Reset(staticVars.Size());
|
||||
mExitProvidedStatics.Reset(staticVars.Size());
|
||||
|
||||
for (int i = 0; i < mInstructions.Size(); i++)
|
||||
mInstructions[i]->FilterStaticVarsUsage(staticVars, mLocalRequiredStatics, mLocalProvidedStatics);
|
||||
|
@ -8819,13 +8821,13 @@ void InterCodeBasicBlock::BuildStaticVariableByteSet(const GrowingVariableArray&
|
|||
{
|
||||
mVisited = true;
|
||||
|
||||
mLocalRequiredStatics = NumberSet(bsize);
|
||||
mLocalProvidedStatics = NumberSet(bsize);
|
||||
mLocalRequiredStatics.Reset(bsize);
|
||||
mLocalProvidedStatics.Reset(bsize);
|
||||
|
||||
mEntryRequiredStatics = NumberSet(bsize);
|
||||
mEntryProvidedStatics = NumberSet(bsize);
|
||||
mExitRequiredStatics = NumberSet(bsize);
|
||||
mExitProvidedStatics = NumberSet(bsize);
|
||||
mEntryRequiredStatics.Reset(bsize);
|
||||
mEntryProvidedStatics.Reset(bsize);
|
||||
mExitRequiredStatics.Reset(bsize);
|
||||
mExitProvidedStatics.Reset(bsize);
|
||||
|
||||
for (int i = 0; i < mInstructions.Size(); i++)
|
||||
mInstructions[i]->FilterStaticVarsByteUsage(staticVars, mLocalRequiredStatics, mLocalProvidedStatics);
|
||||
|
@ -8881,21 +8883,21 @@ void InterCodeBasicBlock::BuildLocalVariableSets(const GrowingVariableArray& loc
|
|||
{
|
||||
mVisited = true;
|
||||
|
||||
mLocalRequiredVars = NumberSet(localVars.Size());
|
||||
mLocalProvidedVars = NumberSet(localVars.Size());
|
||||
mLocalRequiredVars.Reset(localVars.Size());
|
||||
mLocalProvidedVars.Reset(localVars.Size());
|
||||
|
||||
mEntryRequiredVars = NumberSet(localVars.Size());
|
||||
mEntryProvidedVars = NumberSet(localVars.Size());
|
||||
mExitRequiredVars = NumberSet(localVars.Size());
|
||||
mExitProvidedVars = NumberSet(localVars.Size());
|
||||
mEntryRequiredVars.Reset(localVars.Size());
|
||||
mEntryProvidedVars.Reset(localVars.Size());
|
||||
mExitRequiredVars.Reset(localVars.Size());
|
||||
mExitProvidedVars.Reset(localVars.Size());
|
||||
|
||||
mLocalRequiredParams = NumberSet(params.Size());
|
||||
mLocalProvidedParams = NumberSet(params.Size());
|
||||
mLocalRequiredParams.Reset(params.Size());
|
||||
mLocalProvidedParams.Reset(params.Size());
|
||||
|
||||
mEntryRequiredParams = NumberSet(params.Size());
|
||||
mEntryProvidedParams = NumberSet(params.Size());
|
||||
mExitRequiredParams = NumberSet(params.Size());
|
||||
mExitProvidedParams = NumberSet(params.Size());
|
||||
mEntryRequiredParams.Reset(params.Size());
|
||||
mEntryProvidedParams.Reset(params.Size());
|
||||
mExitRequiredParams.Reset(params.Size());
|
||||
mExitProvidedParams.Reset(params.Size());
|
||||
|
||||
for (i = 0; i < mInstructions.Size(); i++)
|
||||
{
|
||||
|
|
|
@ -368,6 +368,7 @@ public:
|
|||
NumberSet mEntryRequiredTemps, mEntryProvidedTemps, mEntryPotentialTemps;
|
||||
NumberSet mExitRequiredTemps, mExitProvidedTemps, mExitPotentialTemps;
|
||||
NumberSet mEntryConstTemp, mExitConstTemp;
|
||||
NumberSet mNewRequiredTemps;
|
||||
|
||||
NumberSet mLocalRequiredVars, mLocalProvidedVars;
|
||||
NumberSet mEntryRequiredVars, mEntryProvidedVars;
|
||||
|
|
|
@ -95,13 +95,9 @@ void NativeRegisterDataSet::ResetMask(void)
|
|||
void NativeRegisterDataSet::ResetWorkRegs(void)
|
||||
{
|
||||
ResetZeroPage(BC_REG_WORK_Y);
|
||||
ResetZeroPage(BC_REG_ADDR + 0);
|
||||
ResetZeroPage(BC_REG_ADDR + 1);
|
||||
|
||||
for (int i = 0; i < 4; i++)
|
||||
ResetZeroPage(BC_REG_ACCU + i);
|
||||
for (int i = 0; i < 8; i++)
|
||||
ResetZeroPage(BC_REG_WORK + i);
|
||||
ResetZeroPageRange(BC_REG_ADDR, 2);
|
||||
ResetZeroPageRange(BC_REG_ACCU, 4);
|
||||
ResetZeroPageRange(BC_REG_WORK, 8);
|
||||
}
|
||||
|
||||
void NativeRegisterDataSet::ResetWorkMasks(void)
|
||||
|
@ -129,6 +125,20 @@ void NativeRegisterDataSet::ResetZeroPage(int addr)
|
|||
}
|
||||
}
|
||||
|
||||
void NativeRegisterDataSet::ResetZeroPageRange(int addr, int num)
|
||||
{
|
||||
for(int i=0; i<num; i++)
|
||||
mRegs[addr + i].Reset();
|
||||
for (int i = 0; i < NUM_REGS; i++)
|
||||
{
|
||||
if (mRegs[i].mMode == NRDM_ZERO_PAGE && mRegs[i].mValue >= addr && mRegs[i].mValue < addr + num)
|
||||
mRegs[i].Reset();
|
||||
else if (mRegs[i].mMode == NRDM_INDIRECT_Y && mRegs[i].mValue + 1 >= addr && mRegs[i].mValue < addr + num)
|
||||
mRegs[i].Reset();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int NativeRegisterDataSet::FindAbsolute(LinkerObject* linkerObject, int addr)
|
||||
{
|
||||
for (int i = 0; i < 256; i++)
|
||||
|
@ -12467,13 +12477,13 @@ void NativeCodeBasicBlock::BuildLocalRegSets(void)
|
|||
{
|
||||
mVisited = true;
|
||||
|
||||
mLocalRequiredRegs = NumberSet(NUM_REGS);
|
||||
mLocalProvidedRegs = NumberSet(NUM_REGS);
|
||||
mLocalRequiredRegs.Reset(NUM_REGS);
|
||||
mLocalProvidedRegs.Reset(NUM_REGS);
|
||||
|
||||
mEntryRequiredRegs = NumberSet(NUM_REGS);
|
||||
mEntryProvidedRegs = NumberSet(NUM_REGS);
|
||||
mExitRequiredRegs = NumberSet(NUM_REGS);
|
||||
mExitProvidedRegs = NumberSet(NUM_REGS);
|
||||
mEntryRequiredRegs.Reset(NUM_REGS);
|
||||
mEntryProvidedRegs.Reset(NUM_REGS);
|
||||
mExitRequiredRegs.Reset(NUM_REGS);
|
||||
mExitProvidedRegs.Reset(NUM_REGS);
|
||||
|
||||
if (mEntryRegA)
|
||||
mLocalProvidedRegs += CPU_REG_A;
|
||||
|
@ -12546,18 +12556,18 @@ bool NativeCodeBasicBlock::BuildGlobalRequiredRegSet(NumberSet& fromRequiredRegs
|
|||
{
|
||||
mVisited = true;
|
||||
|
||||
NumberSet newRequiredRegs(mExitRequiredRegs);
|
||||
mNewRequiredRegs = mExitRequiredRegs;
|
||||
|
||||
if (mTrueJump && mTrueJump->BuildGlobalRequiredRegSet(newRequiredRegs)) revisit = true;
|
||||
if (mFalseJump && mFalseJump->BuildGlobalRequiredRegSet(newRequiredRegs)) revisit = true;
|
||||
if (mTrueJump && mTrueJump->BuildGlobalRequiredRegSet(mNewRequiredRegs)) revisit = true;
|
||||
if (mFalseJump && mFalseJump->BuildGlobalRequiredRegSet(mNewRequiredRegs)) revisit = true;
|
||||
|
||||
if (!(newRequiredRegs <= mExitRequiredRegs))
|
||||
if (!(mNewRequiredRegs <= mExitRequiredRegs))
|
||||
{
|
||||
revisit = true;
|
||||
|
||||
mExitRequiredRegs = newRequiredRegs;
|
||||
newRequiredRegs -= mLocalProvidedRegs;
|
||||
mEntryRequiredRegs |= newRequiredRegs;
|
||||
mExitRequiredRegs = mNewRequiredRegs;
|
||||
mNewRequiredRegs -= mLocalProvidedRegs;
|
||||
mEntryRequiredRegs |= mNewRequiredRegs;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -45,6 +45,7 @@ struct NativeRegisterDataSet
|
|||
void ResetMask(void);
|
||||
|
||||
void ResetZeroPage(int addr);
|
||||
void ResetZeroPageRange(int addr, int num);
|
||||
void ResetAbsolute(LinkerObject * linkerObject, int addr);
|
||||
int FindAbsolute(LinkerObject* linkerObject, int addr);
|
||||
void ResetIndirect(int reg);
|
||||
|
@ -369,6 +370,7 @@ public:
|
|||
NumberSet mLocalRequiredRegs, mLocalProvidedRegs;
|
||||
NumberSet mEntryRequiredRegs, mEntryProvidedRegs;
|
||||
NumberSet mExitRequiredRegs, mExitProvidedRegs;
|
||||
NumberSet mNewRequiredRegs;
|
||||
NumberSet mTempRegs;
|
||||
|
||||
void BuildLocalRegSets(void);
|
||||
|
|
|
@ -74,7 +74,7 @@ int main2(int argc, const char** argv)
|
|||
|
||||
#else
|
||||
strcpy(strProductName, "oscar64");
|
||||
strcpy(strProductVersion, "1.26.224");
|
||||
strcpy(strProductVersion, "1.26.225");
|
||||
|
||||
#ifdef __APPLE__
|
||||
uint32_t length = sizeof(basePath);
|
||||
|
|
|
@ -25,8 +25,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL
|
|||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1,26,224,0
|
||||
PRODUCTVERSION 1,26,224,0
|
||||
FILEVERSION 1,26,225,0
|
||||
PRODUCTVERSION 1,26,225,0
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
|
@ -43,12 +43,12 @@ BEGIN
|
|||
BEGIN
|
||||
VALUE "CompanyName", "oscar64"
|
||||
VALUE "FileDescription", "oscar64 compiler"
|
||||
VALUE "FileVersion", "1.26.224.0"
|
||||
VALUE "FileVersion", "1.26.225.0"
|
||||
VALUE "InternalName", "oscar64.exe"
|
||||
VALUE "LegalCopyright", "Copyright (C) 2021"
|
||||
VALUE "OriginalFilename", "oscar64.exe"
|
||||
VALUE "ProductName", "oscar64"
|
||||
VALUE "ProductVersion", "1.26.224.0"
|
||||
VALUE "ProductVersion", "1.26.225.0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
|
|
|
@ -52,6 +52,12 @@
|
|||
}
|
||||
"Entry"
|
||||
{
|
||||
"MsmKey" = "8:_071415C872DB4A94B28137BD7FE1F669"
|
||||
"OwnerKey" = "8:_UNDEFINED"
|
||||
"MsmSig" = "8:_UNDEFINED"
|
||||
}
|
||||
"Entry"
|
||||
{
|
||||
"MsmKey" = "8:_071CF34574024DBD95D2203D6E4279D0"
|
||||
"OwnerKey" = "8:_UNDEFINED"
|
||||
"MsmSig" = "8:_UNDEFINED"
|
||||
|
@ -1150,6 +1156,12 @@
|
|||
}
|
||||
"Entry"
|
||||
{
|
||||
"MsmKey" = "8:_ED20DE3FDC8A400296E92AE0D37D8665"
|
||||
"OwnerKey" = "8:_UNDEFINED"
|
||||
"MsmSig" = "8:_UNDEFINED"
|
||||
}
|
||||
"Entry"
|
||||
{
|
||||
"MsmKey" = "8:_ED5FED616EA64689AB793E5D8BD3F13D"
|
||||
"OwnerKey" = "8:_UNDEFINED"
|
||||
"MsmSig" = "8:_UNDEFINED"
|
||||
|
@ -1439,6 +1451,26 @@
|
|||
"IsDependency" = "11:FALSE"
|
||||
"IsolateTo" = "8:"
|
||||
}
|
||||
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_071415C872DB4A94B28137BD7FE1F669"
|
||||
{
|
||||
"SourcePath" = "8:..\\include\\opp\\slab.h"
|
||||
"TargetName" = "8:slab.h"
|
||||
"Tag" = "8:"
|
||||
"Folder" = "8:_D76A1802AFD04C48A519C9F8700E53CC"
|
||||
"Condition" = "8:"
|
||||
"Transitive" = "11:FALSE"
|
||||
"Vital" = "11:TRUE"
|
||||
"ReadOnly" = "11:FALSE"
|
||||
"Hidden" = "11:FALSE"
|
||||
"System" = "11:FALSE"
|
||||
"Permanent" = "11:FALSE"
|
||||
"SharedLegacy" = "11:FALSE"
|
||||
"PackageAs" = "3:1"
|
||||
"Register" = "3:1"
|
||||
"Exclude" = "11:FALSE"
|
||||
"IsDependency" = "11:FALSE"
|
||||
"IsolateTo" = "8:"
|
||||
}
|
||||
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_071CF34574024DBD95D2203D6E4279D0"
|
||||
{
|
||||
"SourcePath" = "8:..\\include\\opp\\iostream.h"
|
||||
|
@ -5099,6 +5131,26 @@
|
|||
"IsDependency" = "11:FALSE"
|
||||
"IsolateTo" = "8:"
|
||||
}
|
||||
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_ED20DE3FDC8A400296E92AE0D37D8665"
|
||||
{
|
||||
"SourcePath" = "8:..\\include\\opp\\static_vector.h"
|
||||
"TargetName" = "8:static_vector.h"
|
||||
"Tag" = "8:"
|
||||
"Folder" = "8:_D76A1802AFD04C48A519C9F8700E53CC"
|
||||
"Condition" = "8:"
|
||||
"Transitive" = "11:FALSE"
|
||||
"Vital" = "11:TRUE"
|
||||
"ReadOnly" = "11:FALSE"
|
||||
"Hidden" = "11:FALSE"
|
||||
"System" = "11:FALSE"
|
||||
"Permanent" = "11:FALSE"
|
||||
"SharedLegacy" = "11:FALSE"
|
||||
"PackageAs" = "3:1"
|
||||
"Register" = "3:1"
|
||||
"Exclude" = "11:FALSE"
|
||||
"IsDependency" = "11:FALSE"
|
||||
"IsolateTo" = "8:"
|
||||
}
|
||||
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_ED5FED616EA64689AB793E5D8BD3F13D"
|
||||
{
|
||||
"SourcePath" = "8:..\\include\\nes\\mmc3.c"
|
||||
|
@ -5712,15 +5764,15 @@
|
|||
{
|
||||
"Name" = "8:Microsoft Visual Studio"
|
||||
"ProductName" = "8:oscar64"
|
||||
"ProductCode" = "8:{F884314C-DBC1-466B-9A34-1761B921E1BD}"
|
||||
"PackageCode" = "8:{5563B34B-0822-45A3-85A4-8007E3D57051}"
|
||||
"ProductCode" = "8:{50B8F261-E014-4D97-807C-8B181651E0CF}"
|
||||
"PackageCode" = "8:{73E601A2-834D-4280-AFAD-0E275AEDBF01}"
|
||||
"UpgradeCode" = "8:{9AB61EFF-ACAC-4079-9950-8D96615CD4EF}"
|
||||
"AspNetVersion" = "8:2.0.50727.0"
|
||||
"RestartWWWService" = "11:FALSE"
|
||||
"RemovePreviousVersions" = "11:TRUE"
|
||||
"DetectNewerInstalledVersion" = "11:TRUE"
|
||||
"InstallAllUsers" = "11:FALSE"
|
||||
"ProductVersion" = "8:1.26.224"
|
||||
"ProductVersion" = "8:1.26.225"
|
||||
"Manufacturer" = "8:oscar64"
|
||||
"ARPHELPTELEPHONE" = "8:"
|
||||
"ARPHELPLINK" = "8:"
|
||||
|
|
Loading…
Reference in New Issue