Skip to content

Commit

Permalink
Huge speed up
Browse files Browse the repository at this point in the history
  • Loading branch information
trolldbois committed Aug 5, 2015
1 parent 5fbe9de commit 91ae749
Showing 1 changed file with 26 additions and 17 deletions.
43 changes: 26 additions & 17 deletions haystack/target.py
Original file line number Diff line number Diff line change
Expand Up @@ -209,23 +209,7 @@ def _detect_ld_size(self):

@staticmethod
def make_target_platform_local():
""" """
cpu = int(platform.architecture()[0].split('bit')[0])
if 'linux' in sys.platform:
os_name = TargetPlatform.LINUX
else:# sys.platform.startswith('win'):
os_name = TargetPlatform.WIN7
if cpu == 32:
if os_name in [TargetPlatform.WINXP, TargetPlatform.WIN7]:
return TargetPlatform.make_target_win_32(os_name)
elif os_name == TargetPlatform.LINUX:
return TargetPlatform.make_target_linux_32()
elif cpu == 64:
if os_name in [TargetPlatform.WINXP, TargetPlatform.WIN7]:
return TargetPlatform.make_target_win_64(os_name)
elif os_name == TargetPlatform.LINUX:
return TargetPlatform.make_target_linux_64()
raise NotImplementedError()
return _make_target_platform_local()

@staticmethod
def make_target_win_32(os_name):
Expand All @@ -250,3 +234,28 @@ def make_target_linux_64():
""" """
target = TargetPlatform(None, os_name=TargetPlatform.LINUX, cpu_bits=64, word_size=8, ptr_size=8, ld_size=16)
return target


__LOCAL_PLATFORM = None

def _make_target_platform_local():
""" """
global __LOCAL_PLATFORM
if __LOCAL_PLATFORM:
return __LOCAL_PLATFORM
cpu = int(platform.architecture()[0].split('bit')[0])
if 'linux' in sys.platform:
os_name = TargetPlatform.LINUX
else: # sys.platform.startswith('win'):
os_name = TargetPlatform.WIN7
if cpu == 32:
if os_name in [TargetPlatform.WINXP, TargetPlatform.WIN7]:
__LOCAL_PLATFORM = TargetPlatform.make_target_win_32(os_name)
elif os_name == TargetPlatform.LINUX:
__LOCAL_PLATFORM = TargetPlatform.make_target_linux_32()
elif cpu == 64:
if os_name in [TargetPlatform.WINXP, TargetPlatform.WIN7]:
__LOCAL_PLATFORM = TargetPlatform.make_target_win_64(os_name)
elif os_name == TargetPlatform.LINUX:
__LOCAL_PLATFORM = TargetPlatform.make_target_linux_64()
return __LOCAL_PLATFORM

0 comments on commit 91ae749

Please sign in to comment.