Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. | 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. |
| 2 // All Rights Reserved. | 2 // All Rights Reserved. |
| 3 // | 3 // |
| 4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
| 5 // modification, are permitted provided that the following conditions | 5 // modification, are permitted provided that the following conditions |
| 6 // are met: | 6 // are met: |
| 7 // | 7 // |
| 8 // - Redistributions of source code must retain the above copyright notice, | 8 // - Redistributions of source code must retain the above copyright notice, |
| 9 // this list of conditions and the following disclaimer. | 9 // this list of conditions and the following disclaimer. |
| 10 // | 10 // |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 52 | 52 |
| 53 | 53 |
| 54 #ifdef __arm__ | 54 #ifdef __arm__ |
| 55 static uint64_t CpuFeaturesImpliedByCompiler() { | 55 static uint64_t CpuFeaturesImpliedByCompiler() { |
| 56 uint64_t answer = 0; | 56 uint64_t answer = 0; |
| 57 #ifdef CAN_USE_ARMV7_INSTRUCTIONS | 57 #ifdef CAN_USE_ARMV7_INSTRUCTIONS |
| 58 answer |= 1u << ARMv7; | 58 answer |= 1u << ARMv7; |
| 59 #endif // def CAN_USE_ARMV7_INSTRUCTIONS | 59 #endif // def CAN_USE_ARMV7_INSTRUCTIONS |
| 60 // If the compiler is allowed to use VFP then we can use VFP too in our code | 60 // If the compiler is allowed to use VFP then we can use VFP too in our code |
| 61 // generation even when generating snapshots. This won't work for cross | 61 // generation even when generating snapshots. This won't work for cross |
| 62 // compilation. | 62 // compilation. VFPv3 implies ARMv7, see ARM DDI 0406B, page A1-6. |
| 63 #if defined(__VFP_FP__) && !defined(__SOFTFP__) | 63 #if defined(__VFP_FP__) && !defined(__SOFTFP__) |
|
Rodolph Perfetta
2011/04/11 12:48:55
This would be true for VFPv2 too.
Søren Thygesen Gjesse
2011/04/11 14:10:25
I see, but that was what we had before. I can't se
| |
| 64 answer |= 1u << VFP3; | 64 answer |= 1u << VFP3 | 1u << ARMv7; |
| 65 #endif // defined(__VFP_FP__) && !defined(__SOFTFP__) | 65 #endif // defined(__VFP_FP__) && !defined(__SOFTFP__) |
| 66 #ifdef CAN_USE_VFP_INSTRUCTIONS | 66 #ifdef CAN_USE_VFP_INSTRUCTIONS |
|
Rodolph Perfetta
2011/04/11 12:48:55
I can't find where CAN_USE_VFP_INSTRUCTIONS is def
Søren Thygesen Gjesse
2011/04/11 14:10:25
This is defined in the SConstruct file when compil
| |
| 67 answer |= 1u << VFP3; | 67 answer |= 1u << VFP3 | 1u << ARMv7; |
| 68 #endif // def CAN_USE_VFP_INSTRUCTIONS | 68 #endif // def CAN_USE_VFP_INSTRUCTIONS |
| 69 return answer; | 69 return answer; |
| 70 } | 70 } |
| 71 #endif // def __arm__ | 71 #endif // def __arm__ |
| 72 | 72 |
| 73 | 73 |
| 74 void CpuFeatures::Probe() { | 74 void CpuFeatures::Probe() { |
| 75 ASSERT(!initialized_); | 75 ASSERT(!initialized_); |
| 76 #ifdef DEBUG | 76 #ifdef DEBUG |
| 77 initialized_ = true; | 77 initialized_ = true; |
| 78 #endif | 78 #endif |
| 79 #ifndef __arm__ | 79 #ifndef __arm__ |
| 80 // For the simulator=arm build, use VFP when FLAG_enable_vfp3 is enabled. | 80 // For the simulator=arm build, use VFP when FLAG_enable_vfp3 is |
| 81 // enabled. VFPv3 implies ARMv7, see ARM DDI 0406B, page A1-6. | |
| 81 if (FLAG_enable_vfp3) { | 82 if (FLAG_enable_vfp3) { |
| 82 supported_ |= 1u << VFP3; | 83 supported_ |= 1u << VFP3 | 1u << ARMv7; |
| 83 } | 84 } |
| 84 // For the simulator=arm build, use ARMv7 when FLAG_enable_armv7 is enabled | 85 // For the simulator=arm build, use ARMv7 when FLAG_enable_armv7 is enabled |
| 85 if (FLAG_enable_armv7) { | 86 if (FLAG_enable_armv7) { |
| 86 supported_ |= 1u << ARMv7; | 87 supported_ |= 1u << ARMv7; |
| 87 } | 88 } |
| 88 #else // def __arm__ | 89 #else // def __arm__ |
| 89 if (Serializer::enabled()) { | 90 if (Serializer::enabled()) { |
| 90 supported_ |= OS::CpuFeaturesImpliedByPlatform(); | 91 supported_ |= OS::CpuFeaturesImpliedByPlatform(); |
| 91 supported_ |= CpuFeaturesImpliedByCompiler(); | 92 supported_ |= CpuFeaturesImpliedByCompiler(); |
| 92 return; // No features if we might serialize. | 93 return; // No features if we might serialize. |
| 93 } | 94 } |
| 94 | 95 |
| 95 if (OS::ArmCpuHasFeature(VFP3)) { | 96 if (OS::ArmCpuHasFeature(VFP3)) { |
| 96 // This implementation also sets the VFP flags if | 97 // This implementation also sets the VFP flags if runtime |
| 97 // runtime detection of VFP returns true. | 98 // detection of VFP returns true. VFPv3 implies ARMv7, see ARM DDI |
| 98 supported_ |= 1u << VFP3; | 99 // 0406B, page A1-6. |
| 99 found_by_runtime_probing_ |= 1u << VFP3; | 100 supported_ |= 1u << VFP3 | 1u << ARMv7; |
| 101 found_by_runtime_probing_ |= 1u << VFP3 | 1u << ARMv7; | |
| 100 } | 102 } |
| 101 | 103 |
| 102 if (OS::ArmCpuHasFeature(ARMv7)) { | 104 if (OS::ArmCpuHasFeature(ARMv7)) { |
| 103 supported_ |= 1u << ARMv7; | 105 supported_ |= 1u << ARMv7; |
| 104 found_by_runtime_probing_ |= 1u << ARMv7; | 106 found_by_runtime_probing_ |= 1u << ARMv7; |
| 105 } | 107 } |
| 106 #endif | 108 #endif |
| 107 } | 109 } |
| 108 | 110 |
| 109 | 111 |
| (...skipping 2719 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2829 | 2831 |
| 2830 // Since a constant pool was just emitted, move the check offset forward by | 2832 // Since a constant pool was just emitted, move the check offset forward by |
| 2831 // the standard interval. | 2833 // the standard interval. |
| 2832 next_buffer_check_ = pc_offset() + kCheckConstInterval; | 2834 next_buffer_check_ = pc_offset() + kCheckConstInterval; |
| 2833 } | 2835 } |
| 2834 | 2836 |
| 2835 | 2837 |
| 2836 } } // namespace v8::internal | 2838 } } // namespace v8::internal |
| 2837 | 2839 |
| 2838 #endif // V8_TARGET_ARCH_ARM | 2840 #endif // V8_TARGET_ARCH_ARM |
| OLD | NEW |