| OLD | NEW |
| 1 # Copyright 2013 the V8 project authors. All rights reserved. | 1 # Copyright 2013 the V8 project authors. All rights reserved. |
| 2 # Redistribution and use in source and binary forms, with or without | 2 # Redistribution and use in source and binary forms, with or without |
| 3 # modification, are permitted provided that the following conditions are | 3 # modification, are permitted provided that the following conditions are |
| 4 # met: | 4 # met: |
| 5 # | 5 # |
| 6 # * Redistributions of source code must retain the above copyright | 6 # * Redistributions of source code must retain the above copyright |
| 7 # notice, this list of conditions and the following disclaimer. | 7 # notice, this list of conditions and the following disclaimer. |
| 8 # * Redistributions in binary form must reproduce the above | 8 # * Redistributions in binary form must reproduce the above |
| 9 # copyright notice, this list of conditions and the following | 9 # copyright notice, this list of conditions and the following |
| 10 # disclaimer in the documentation and/or other materials provided | 10 # disclaimer in the documentation and/or other materials provided |
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 222 [ 'arm_thumb==1', { | 222 [ 'arm_thumb==1', { |
| 223 'cflags': ['-mthumb',], | 223 'cflags': ['-mthumb',], |
| 224 }], | 224 }], |
| 225 [ 'arm_thumb==0', { | 225 [ 'arm_thumb==0', { |
| 226 'cflags': ['-marm',], | 226 'cflags': ['-marm',], |
| 227 }], | 227 }], |
| 228 ], | 228 ], |
| 229 }, { | 229 }, { |
| 230 # 'v8_target_arch!=target_arch' | 230 # 'v8_target_arch!=target_arch' |
| 231 # Target not built with an Arm CXX compiler (simulator build). | 231 # Target not built with an Arm CXX compiler (simulator build). |
| 232 'cflags': [ |
| 233 '-msse2', |
| 234 '-mfpmath=sse', |
| 235 '-mmmx', # Allows mmintrin.h for MMX intrinsics. |
| 236 ], |
| 232 'conditions': [ | 237 'conditions': [ |
| 233 [ 'arm_float_abi=="hard"', { | 238 [ 'arm_float_abi=="hard"', { |
| 234 'defines': [ | 239 'defines': [ |
| 235 'USE_EABI_HARDFLOAT=1', | 240 'USE_EABI_HARDFLOAT=1', |
| 236 ], | 241 ], |
| 237 }], | 242 }], |
| 238 [ 'arm_float_abi=="softfp" or arm_float_abi=="default"', { | 243 [ 'arm_float_abi=="softfp" or arm_float_abi=="default"', { |
| 239 'defines': [ | 244 'defines': [ |
| 240 'USE_EABI_HARDFLOAT=0', | 245 'USE_EABI_HARDFLOAT=0', |
| 241 ], | 246 ], |
| (...skipping 569 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 811 ['OS=="win" and v8_enable_prof==1', { | 816 ['OS=="win" and v8_enable_prof==1', { |
| 812 'msvs_settings': { | 817 'msvs_settings': { |
| 813 'VCLinkerTool': { | 818 'VCLinkerTool': { |
| 814 'GenerateMapFile': 'true', | 819 'GenerateMapFile': 'true', |
| 815 }, | 820 }, |
| 816 }, | 821 }, |
| 817 }], | 822 }], |
| 818 ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \ | 823 ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \ |
| 819 or OS=="netbsd" or OS=="mac" or OS=="android" or OS=="qnx") and \ | 824 or OS=="netbsd" or OS=="mac" or OS=="android" or OS=="qnx") and \ |
| 820 v8_target_arch=="ia32"', { | 825 v8_target_arch=="ia32"', { |
| 821 # All floating-point computations on x87 happens in 80-bit | |
| 822 # precision. Because the C and C++ language standards allow | |
| 823 # the compiler to keep the floating-point values in higher | |
| 824 # precision than what's specified in the source and doing so | |
| 825 # is more efficient than constantly rounding up to 64-bit or | |
| 826 # 32-bit precision as specified in the source, the compiler, | |
| 827 # especially in the optimized mode, tries very hard to keep | |
| 828 # values in x87 floating-point stack (in 80-bit precision) | |
| 829 # as long as possible. This has important side effects, that | |
| 830 # the real value used in computation may change depending on | |
| 831 # how the compiler did the optimization - that is, the value | |
| 832 # kept in 80-bit is different than the value rounded down to | |
| 833 # 64-bit or 32-bit. There are possible compiler options to | |
| 834 # make this behavior consistent (e.g. -ffloat-store would keep | |
| 835 # all floating-values in the memory, thus force them to be | |
| 836 # rounded to its original precision) but they have significant | |
| 837 # runtime performance penalty. | |
| 838 # | |
| 839 # -mfpmath=sse -msse2 makes the compiler use SSE instructions | |
| 840 # which keep floating-point values in SSE registers in its | |
| 841 # native precision (32-bit for single precision, and 64-bit | |
| 842 # for double precision values). This means the floating-point | |
| 843 # value used during computation does not change depending on | |
| 844 # how the compiler optimized the code, since the value is | |
| 845 # always kept in its specified precision. | |
| 846 # | |
| 847 # Refer to http://crbug.com/348761 for rationale behind SSE2 | |
| 848 # being a minimum requirement for 32-bit Linux builds and | |
| 849 # http://crbug.com/313032 for an example where this has "bit" | |
| 850 # us in the past. | |
| 851 'cflags': [ | 826 'cflags': [ |
| 852 '-msse2', | 827 '-msse2', |
| 853 '-mfpmath=sse', | 828 '-mfpmath=sse', |
| 854 '-mmmx', # Allows mmintrin.h for MMX intrinsics. | 829 '-mmmx', # Allows mmintrin.h for MMX intrinsics. |
| 855 ], | 830 ], |
| 856 }], | 831 }], |
| 857 ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \ | 832 ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \ |
| 858 or OS=="netbsd" or OS=="mac" or OS=="android" or OS=="qnx") and \ | 833 or OS=="netbsd" or OS=="mac" or OS=="android" or OS=="qnx") and \ |
| 859 (v8_target_arch=="arm" or v8_target_arch=="ia32" or \ | 834 (v8_target_arch=="arm" or v8_target_arch=="ia32" or \ |
| 860 v8_target_arch=="x87" or v8_target_arch=="mips" or \ | 835 v8_target_arch=="x87" or v8_target_arch=="mips" or \ |
| (...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1172 ['v8_enable_slow_dchecks==1', { | 1147 ['v8_enable_slow_dchecks==1', { |
| 1173 'defines': [ | 1148 'defines': [ |
| 1174 'ENABLE_SLOW_DCHECKS', | 1149 'ENABLE_SLOW_DCHECKS', |
| 1175 ], | 1150 ], |
| 1176 }], | 1151 }], |
| 1177 ], # conditions | 1152 ], # conditions |
| 1178 }, # Release | 1153 }, # Release |
| 1179 }, # configurations | 1154 }, # configurations |
| 1180 }, # target_defaults | 1155 }, # target_defaults |
| 1181 } | 1156 } |
| OLD | NEW |