Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
P
Pyston
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
Pyston
Commits
f7fed538
Commit
f7fed538
authored
Jul 28, 2015
by
Kevin Modzelewski
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #727
parents
b8b126e3
b4a9fa1b
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
78 additions
and
8 deletions
+78
-8
.gitignore
.gitignore
+2
-0
CMakeLists.txt
CMakeLists.txt
+37
-3
Makefile
Makefile
+34
-4
src/runtime/inline/CMakeLists.txt
src/runtime/inline/CMakeLists.txt
+4
-0
src/runtime/objmodel.cpp
src/runtime/objmodel.cpp
+1
-1
No files found.
.gitignore
View file @
f7fed538
...
...
@@ -24,6 +24,8 @@ pyston_grwl_dbg
pyston_nosync
pyston_gcc
pyston_release_gcc
pyston_release_gcc_pgo
pyston_release_gcc_pgo_instrumented
pystontmp*/
/*_unittest
...
...
CMakeLists.txt
View file @
f7fed538
...
...
@@ -29,8 +29,11 @@ option(ENABLE_OPROFILE "enable oprofile support" OFF)
option
(
ENABLE_SELF_HOST
"use pyston to test pyston"
OFF
)
option
(
ENABLE_VALGRIND
"pyston valgrind support"
OFF
)
option
(
ENABLE_PGO
"enable -fprofile-generate/-fprofile-use"
OFF
)
option
(
ENABLE_LTO
"enable -flto"
OFF
)
# automatically use ccache if found
if
(
ENABLE_CCACHE
)
if
(
ENABLE_CCACHE
AND NOT ENABLE_PGO
)
find_program
(
CCACHE ccache
)
if
(
CCACHE
)
message
(
STATUS
"found ccache
${
CCACHE
}
"
)
...
...
@@ -46,8 +49,11 @@ if(ENABLE_GOLD)
message
(
STATUS
"found the gold linker
${
GOLD_LINKER
}
"
)
set
(
CMAKE_LINKER
"
${
GOLD_LINKER
}
"
)
set
(
CMAKE_CXX_LINK_FLAGS
"
${
CMAKE_CXX_LINK_FLAGS
}
-B
${
CMAKE_SOURCE_DIR
}
/tools/build_system"
)
if
(
NOT ENABLE_PGO
)
# let pgo determine the ordering
set
(
CMAKE_CXX_LINK_FLAGS
"
${
CMAKE_CXX_LINK_FLAGS
}
-Wl,--section-ordering-file,
${
CMAKE_CURRENT_SOURCE_DIR
}
/section_ordering.txt"
)
endif
()
endif
()
endif
()
...
...
@@ -59,7 +65,7 @@ else()
endif
()
# initial clang flags (set here so they're used when building llvm)
set
(
CLANG_FLAGS
"-Qunused-arguments -fcolor-diagnostics"
CACHE STRING
"Clang specific C and CXX flags"
)
set
(
CLANG_FLAGS
"-Qunused-arguments -fcolor-diagnostics
-Wno-profile-instr-unprofiled
"
CACHE STRING
"Clang specific C and CXX flags"
)
if
(
"
${
CMAKE_C_COMPILER_ID
}
"
STREQUAL
"Clang"
)
set
(
CMAKE_C_FLAGS
"
${
CMAKE_C_FLAGS
}
${
CLANG_FLAGS
}
"
)
endif
()
...
...
@@ -67,6 +73,31 @@ if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
set
(
CMAKE_CXX_FLAGS
"
${
CMAKE_CXX_FLAGS
}
${
CLANG_FLAGS
}
"
)
endif
()
if
(
ENABLE_LTO
)
set
(
LTO_FLAGS
"-flto"
)
endif
()
if
(
ENABLE_PGO
)
if
(
NOT
"
${
PROFILE_DIR
}
"
STREQUAL
""
)
set
(
PROFILE_STATE
"
${
PROFILE_STATE
}
=
${
PROFILE_DIR
}
"
)
endif
()
set
(
PGO_FLAGS
"-fprofile-
${
PROFILE_STATE
}
-fprofile-correction"
)
endif
()
macro
(
ADD_PROFILE_FLAGS
)
set
(
PROFILE_FLAGS
"
${
PGO_FLAGS
}
${
LTO_FLAGS
}
"
)
set
(
CMAKE_CXX_FLAGS
"
${
CMAKE_CXX_FLAGS
}
${
PROFILE_FLAGS
}
"
)
endmacro
()
# used in src/runtime/inline/CMakeLists.txt to remove the flags we added above
macro
(
REMOVE_PROFILE_FLAGS
)
string
(
REPLACE
"
${
PROFILE_FLAGS
}
"
" "
CMAKE_C_FLAGS
"
${
CMAKE_C_FLAGS
}
"
)
string
(
REPLACE
"
${
PROFILE_FLAGS
}
"
" "
CMAKE_CXX_FLAGS
"
${
CMAKE_CXX_FLAGS
}
"
)
string
(
REPLACE
"
${
PROFILE_FLAGS
}
"
" "
CMAKE_CXX_FLAGS_RELEASE
"
${
CMAKE_CXX_FLAGS_RELEASE
}
"
)
string
(
REPLACE
"
${
PROFILE_FLAGS
}
"
" "
CMAKE_CXX_LINK_FLAGS
"
${
CMAKE_CXX_LINK_FLAGS
}
"
)
string
(
REPLACE
"
${
PROFILE_FLAGS
}
"
" "
CMAKE_EXE_LINKER_FLAGS
"
${
CMAKE_EXE_LINKER_FLAGS
}
"
)
endmacro
()
# llvm disable debug info unless ENABLE_LLVM_DEBUG is ON
if
(
${
CMAKE_BUILD_TYPE
}
STREQUAL
"Debug"
AND NOT ENABLE_LLVM_DEBUG
)
set
(
CMAKE_CXX_FLAGS_DEBUG
"-O3"
CACHE STRING
""
FORCE
)
...
...
@@ -200,6 +231,7 @@ endif()
if
(
"
${
CMAKE_CXX_COMPILER_ID
}
"
STREQUAL
"GNU"
)
set
(
CMAKE_CXX_FLAGS
"
${
CMAKE_CXX_FLAGS
}
-Wno-long-long -Wno-aggregate-return -Wno-inline -Wno-redundant-decls -Wno-strict-overflow"
)
set
(
CMAKE_CXX_LINK_FLAGS
"
${
CMAKE_CXX_LINK_FLAGS
}
-Wl,--no-as-needed"
)
# without this, we don't seem to get jemalloc on gcc builds
endif
()
add_definitions
(
${
LLVM_DEFINITIONS
}
)
...
...
@@ -213,6 +245,8 @@ find_package(LibLZMA REQUIRED)
link_directories
(
${
CMAKE_BINARY_DIR
}
/libunwind/lib
)
link_directories
(
${
LLVM_LIBRARY_DIRS
}
)
ADD_PROFILE_FLAGS
()
add_subdirectory
(
lib_pyston
)
add_subdirectory
(
from_cpython
)
add_subdirectory
(
src
)
...
...
Makefile
View file @
f7fed538
...
...
@@ -65,6 +65,8 @@ CMAKE_DIR_DBG := $(BUILD_DIR)/Debug
CMAKE_DIR_RELEASE
:=
$(BUILD_DIR)
/Release
CMAKE_DIR_GCC
:=
$(BUILD_DIR)
/Debug-gcc
CMAKE_DIR_RELEASE_GCC
:=
$(BUILD_DIR)
/Release-gcc
CMAKE_DIR_RELEASE_GCC_PGO
:=
$(BUILD_DIR)
/Release-gcc-pgo
CMAKE_DIR_RELEASE_GCC_PGO_INSTRUMENTED
:=
$(BUILD_DIR)
/Release-gcc-pgo-instrumented
CMAKE_SETUP_DBG
:=
$(CMAKE_DIR_DBG)
/build.ninja
CMAKE_SETUP_RELEASE
:=
$(CMAKE_DIR_RELEASE)
/build.ninja
...
...
@@ -893,10 +895,10 @@ CMAKE_SHAREDMODS := sharedmods ext_pyston
.PHONY
:
pyston_dbg pyston_release
pyston_dbg
:
$(CMAKE_SETUP_DBG)
$(NINJA)
-C
$(CMAKE_DIR_DBG)
pyston copy_stdlib copy_libpyston
$(CMAKE_SHAREDMODS)
ext_cpython
$(NINJAFLAGS)
ln
-sf
$(CMAKE_DIR_DBG)
/pyston
pyston_dbg
ln
-sf
$(CMAKE_DIR_DBG)
/pyston
$@
pyston_release
:
$(CMAKE_SETUP_RELEASE)
$(NINJA)
-C
$(CMAKE_DIR_RELEASE)
pyston copy_stdlib copy_libpyston
$(CMAKE_SHAREDMODS)
ext_cpython
$(NINJAFLAGS)
ln
-sf
$(CMAKE_DIR_RELEASE)
/pyston
pyston_release
ln
-sf
$(CMAKE_DIR_RELEASE)
/pyston
$@
CMAKE_SETUP_GCC
:=
$(CMAKE_DIR_GCC)
/build.ninja
$(CMAKE_SETUP_GCC)
:
...
...
@@ -906,7 +908,7 @@ $(CMAKE_SETUP_GCC):
.PHONY
:
pyston_gcc
pyston_gcc
:
$(CMAKE_SETUP_GCC)
$(NINJA)
-C
$(CMAKE_DIR_GCC)
pyston copy_stdlib copy_libpyston
$(CMAKE_SHAREDMODS)
ext_cpython
$(NINJAFLAGS)
ln
-sf
$(CMAKE_DIR_GCC)
/pyston
pyston_gcc
ln
-sf
$(CMAKE_DIR_GCC)
/pyston
$@
CMAKE_SETUP_RELEASE_GCC
:=
$(CMAKE_DIR_RELEASE_GCC)
/build.ninja
$(CMAKE_SETUP_RELEASE_GCC)
:
...
...
@@ -916,7 +918,35 @@ $(CMAKE_SETUP_RELEASE_GCC):
.PHONY
:
pyston_release_gcc
pyston_release_gcc
:
$(CMAKE_SETUP_RELEASE_GCC)
$(NINJA)
-C
$(CMAKE_DIR_RELEASE_GCC)
pyston copy_stdlib copy_libpyston
$(CMAKE_SHAREDMODS)
ext_cpython
$(NINJAFLAGS)
ln
-sf
$(CMAKE_DIR_RELEASE_GCC)
/pyston pyston_release_gcc
ln
-sf
$(CMAKE_DIR_RELEASE_GCC)
/pyston
$@
# GCC PGO build
CMAKE_SETUP_RELEASE_GCC_PGO
:=
$(CMAKE_DIR_RELEASE_GCC_PGO)
/build.ninja
$(CMAKE_SETUP_RELEASE_GCC_PGO)
:
@
$(MAKE)
cmake_check
@
mkdir
-p
$(CMAKE_DIR_RELEASE_GCC_PGO)
cd
$(CMAKE_DIR_RELEASE_GCC_PGO)
;
CC
=
'
$(GCC)
'
CXX
=
'
$(GPP)
'
cmake
-GNinja
$(SRC_DIR)
-DCMAKE_BUILD_TYPE
=
Release
$(CMAKE_VALGRIND)
-DENABLE_PGO
=
ON
-DPROFILE_STATE
=
use
.PHONY
:
pyston_release_gcc_pgo
pyston_release_gcc_pgo
:
$(CMAKE_SETUP_RELEASE_GCC_PGO) $(CMAKE_DIR_RELEASE_GCC_PGO)/.trained
$(NINJA)
-C
$(CMAKE_DIR_RELEASE_GCC_PGO)
pyston copy_stdlib copy_libpyston
$(CMAKE_SHAREDMODS)
ext_cpython
$(NINJAFLAGS)
ln
-sf
$(CMAKE_DIR_RELEASE_GCC_PGO)
/pyston
$@
CMAKE_SETUP_RELEASE_GCC_PGO_INSTRUMENTED
:=
$(CMAKE_DIR_RELEASE_GCC_PGO_INSTRUMENTED)
/build.ninja
$(CMAKE_SETUP_RELEASE_GCC_PGO_INSTRUMENTED)
:
@
$(MAKE)
cmake_check
@
mkdir
-p
$(CMAKE_DIR_RELEASE_GCC_PGO_INSTRUMENTED)
cd
$(CMAKE_DIR_RELEASE_GCC_PGO_INSTRUMENTED)
;
CC
=
'
$(GCC)
'
CXX
=
'
$(GPP)
'
cmake
-GNinja
$(SRC_DIR)
-DCMAKE_BUILD_TYPE
=
Release
$(CMAKE_VALGRIND)
-DENABLE_PGO
=
ON
-DPROFILE_STATE
=
generate
-DPROFILE_DIR
=
$(CMAKE_DIR_RELEASE_GCC_PGO)
.PHONY
:
pyston_release_gcc_pgo_instrumented
pyston_release_gcc_pgo_instrumented
:
$(CMAKE_SETUP_RELEASE_GCC_PGO_INSTRUMENTED)
$(NINJA)
-C
$(CMAKE_DIR_RELEASE_GCC_PGO_INSTRUMENTED)
-f
$(CMAKE_SETUP_RELEASE_GCC_PGO_INSTRUMENTED)
pyston copy_stdlib copy_libpyston
$(CMAKE_SHAREDMODS)
ext_cpython
$(NINJAFLAGS)
ln
-sf
$(CMAKE_DIR_RELEASE_GCC_PGO_INSTRUMENTED)
/pyston
$@
$(CMAKE_DIR_RELEASE_GCC_PGO)/.trained
:
pyston_release_gcc_pgo_instrumented
@
echo
"Training pgo"
mkdir
-p
$(CMAKE_DIR_RELEASE_GCC_PGO)
(
cd
$(CMAKE_DIR_RELEASE_GCC_PGO_INSTRUMENTED)
&&
./pyston
$(SRC_DIR)
/minibenchmarks/combined.py
&&
./pyston
$(SRC_DIR)
/minibenchmarks/combined.py
)
&&
touch
$(CMAKE_DIR_RELEASE_GCC_PGO)
/.trained
.PHONY
:
format check_format
format
:
$(CMAKE_SETUP_RELEASE)
...
...
src/runtime/inline/CMakeLists.txt
View file @
f7fed538
...
...
@@ -36,6 +36,10 @@
# adapted from https://github.com/shadow/shadow/blob/master/cmake/LLVMTools.cmake
# don't do pgo here, as our gcc command line flags are incompatible with clang, and we
# don't want to bake the instrumentation into the resulting bitcode anyway.
REMOVE_PROFILE_FLAGS
()
set
(
BC_INLINE_SRCS boxing.cpp dict.cpp link_forcer.cpp list.cpp tuple.cpp xrange.cpp
)
include_directories
(
${
CMAKE_SOURCE_DIR
}
/src
)
...
...
src/runtime/objmodel.cpp
View file @
f7fed538
...
...
@@ -3968,7 +3968,7 @@ Box* runtimeCallInternal(Box* obj, CallRewriteArgs* rewrite_args, ArgPassSpec ar
}
else
if
(
obj
->
cls
==
instancemethod_cls
)
{
BoxedInstanceMethod
*
im
=
static_cast
<
BoxedInstanceMethod
*>
(
obj
);
RewriterVar
*
r_im_func
;
RewriterVar
*
r_im_func
=
NULL
;
if
(
rewrite_args
)
{
r_im_func
=
rewrite_args
->
obj
->
getAttr
(
offsetof
(
BoxedInstanceMethod
,
func
),
Location
::
any
());
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment