Browse Source

Merge branch 'develop-evmcc' of github.com:imapp-pl/ethereum into develop-evmcc

cl-refactor
artur-zawlocki 10 years ago
parent
commit
8e717a669e
  1. 19
      libevmjit/Compiler.cpp
  2. 2
      windows/LibEvmJit.vcxproj
  3. 6
      windows/LibEvmJit.vcxproj.filters

19
libevmjit/Compiler.cpp

@ -875,6 +875,25 @@ void Compiler::compileBasicBlock(BasicBlock& basicBlock, bytesConstRef bytecode,
void Compiler::linkBasicBlocks(Stack& stack) void Compiler::linkBasicBlocks(Stack& stack)
{ {
// Remove dead basic blocks
auto sthErased = false;
do
{
sthErased = false;
for (auto it = basicBlocks.begin(); it != basicBlocks.end();)
{
auto llvmBB = it->second.llvm();
if (llvm::pred_begin(llvmBB) == llvm::pred_end(llvmBB))
{
llvmBB->eraseFromParent();
basicBlocks.erase(it++);
sthErased = true;
}
else
++it;
}
} while (sthErased);
struct BBInfo struct BBInfo
{ {
BasicBlock& bblock; BasicBlock& bblock;

2
windows/LibEvmJit.vcxproj

@ -132,6 +132,7 @@
<ClCompile Include="..\libevmjit\GasMeter.cpp" /> <ClCompile Include="..\libevmjit\GasMeter.cpp" />
<ClCompile Include="..\libevmjit\Memory.cpp" /> <ClCompile Include="..\libevmjit\Memory.cpp" />
<ClCompile Include="..\libevmjit\Runtime.cpp" /> <ClCompile Include="..\libevmjit\Runtime.cpp" />
<ClCompile Include="..\libevmjit\Stack.cpp" />
<ClCompile Include="..\libevmjit\Type.cpp" /> <ClCompile Include="..\libevmjit\Type.cpp" />
<ClCompile Include="..\libevmjit\Utils.cpp" /> <ClCompile Include="..\libevmjit\Utils.cpp" />
<ClCompile Include="..\libevmjit\VM.cpp" /> <ClCompile Include="..\libevmjit\VM.cpp" />
@ -146,6 +147,7 @@
<ClInclude Include="..\libevmjit\GasMeter.h" /> <ClInclude Include="..\libevmjit\GasMeter.h" />
<ClInclude Include="..\libevmjit\Memory.h" /> <ClInclude Include="..\libevmjit\Memory.h" />
<ClInclude Include="..\libevmjit\Runtime.h" /> <ClInclude Include="..\libevmjit\Runtime.h" />
<ClInclude Include="..\libevmjit\Stack.h" />
<ClInclude Include="..\libevmjit\Type.h" /> <ClInclude Include="..\libevmjit\Type.h" />
<ClInclude Include="..\libevmjit\Utils.h" /> <ClInclude Include="..\libevmjit\Utils.h" />
<ClInclude Include="..\libevmjit\VM.h" /> <ClInclude Include="..\libevmjit\VM.h" />

6
windows/LibEvmJit.vcxproj.filters

@ -42,6 +42,9 @@
<ClCompile Include="..\libevmjit\Endianness.cpp"> <ClCompile Include="..\libevmjit\Endianness.cpp">
<Filter>libevmjit</Filter> <Filter>libevmjit</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\libevmjit\Stack.cpp">
<Filter>libevmjit</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\libevmjit\BasicBlock.h"> <ClInclude Include="..\libevmjit\BasicBlock.h">
@ -80,5 +83,8 @@
<ClInclude Include="..\libevmjit\Endianness.h"> <ClInclude Include="..\libevmjit\Endianness.h">
<Filter>libevmjit</Filter> <Filter>libevmjit</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\libevmjit\Stack.h">
<Filter>libevmjit</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
</Project> </Project>
Loading…
Cancel
Save