| 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 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 71 #if defined(__VFP_FP__) && !defined(__SOFTFP__) | 71 #if defined(__VFP_FP__) && !defined(__SOFTFP__) |
| 72 answer |= 1u << VFP3 | 1u << ARMv7; | 72 answer |= 1u << VFP3 | 1u << ARMv7; |
| 73 #endif // defined(__VFP_FP__) && !defined(__SOFTFP__) | 73 #endif // defined(__VFP_FP__) && !defined(__SOFTFP__) |
| 74 #endif // def __arm__ | 74 #endif // def __arm__ |
| 75 | 75 |
| 76 return answer; | 76 return answer; |
| 77 } | 77 } |
| 78 | 78 |
| 79 | 79 |
| 80 void CpuFeatures::Probe() { | 80 void CpuFeatures::Probe() { |
| 81 ASSERT(!initialized_); | 81 unsigned standard_features = (OS::CpuFeaturesImpliedByPlatform() | |
| 82 CpuFeaturesImpliedByCompiler()); |
| 83 ASSERT(supported_ == 0 || supported_ == standard_features); |
| 82 #ifdef DEBUG | 84 #ifdef DEBUG |
| 83 initialized_ = true; | 85 initialized_ = true; |
| 84 #endif | 86 #endif |
| 85 | 87 |
| 86 // Get the features implied by the OS and the compiler settings. This is the | 88 // Get the features implied by the OS and the compiler settings. This is the |
| 87 // minimal set of features which is also alowed for generated code in the | 89 // minimal set of features which is also alowed for generated code in the |
| 88 // snapshot. | 90 // snapshot. |
| 89 supported_ |= OS::CpuFeaturesImpliedByPlatform(); | 91 supported_ |= standard_features; |
| 90 supported_ |= CpuFeaturesImpliedByCompiler(); | |
| 91 | 92 |
| 92 if (Serializer::enabled()) { | 93 if (Serializer::enabled()) { |
| 93 // No probing for features if we might serialize (generate snapshot). | 94 // No probing for features if we might serialize (generate snapshot). |
| 94 return; | 95 return; |
| 95 } | 96 } |
| 96 | 97 |
| 97 #ifndef __arm__ | 98 #ifndef __arm__ |
| 98 // For the simulator=arm build, use VFP when FLAG_enable_vfp3 is | 99 // For the simulator=arm build, use VFP when FLAG_enable_vfp3 is |
| 99 // enabled. VFPv3 implies ARMv7, see ARM DDI 0406B, page A1-6. | 100 // enabled. VFPv3 implies ARMv7, see ARM DDI 0406B, page A1-6. |
| 100 if (FLAG_enable_vfp3) { | 101 if (FLAG_enable_vfp3) { |
| (...skipping 2397 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2498 // to write pure data with no pointers and the constant pool should | 2499 // to write pure data with no pointers and the constant pool should |
| 2499 // be emitted before using dd. | 2500 // be emitted before using dd. |
| 2500 ASSERT(num_pending_reloc_info_ == 0); | 2501 ASSERT(num_pending_reloc_info_ == 0); |
| 2501 CheckBuffer(); | 2502 CheckBuffer(); |
| 2502 *reinterpret_cast<uint32_t*>(pc_) = data; | 2503 *reinterpret_cast<uint32_t*>(pc_) = data; |
| 2503 pc_ += sizeof(uint32_t); | 2504 pc_ += sizeof(uint32_t); |
| 2504 } | 2505 } |
| 2505 | 2506 |
| 2506 | 2507 |
| 2507 void Assembler::RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data) { | 2508 void Assembler::RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data) { |
| 2508 RelocInfo rinfo(pc_, rmode, data); // we do not try to reuse pool constants | 2509 // We do not try to reuse pool constants. |
| 2510 RelocInfo rinfo(pc_, rmode, data, NULL); |
| 2509 if (rmode >= RelocInfo::JS_RETURN && rmode <= RelocInfo::DEBUG_BREAK_SLOT) { | 2511 if (rmode >= RelocInfo::JS_RETURN && rmode <= RelocInfo::DEBUG_BREAK_SLOT) { |
| 2510 // Adjust code for new modes. | 2512 // Adjust code for new modes. |
| 2511 ASSERT(RelocInfo::IsDebugBreakSlot(rmode) | 2513 ASSERT(RelocInfo::IsDebugBreakSlot(rmode) |
| 2512 || RelocInfo::IsJSReturn(rmode) | 2514 || RelocInfo::IsJSReturn(rmode) |
| 2513 || RelocInfo::IsComment(rmode) | 2515 || RelocInfo::IsComment(rmode) |
| 2514 || RelocInfo::IsPosition(rmode)); | 2516 || RelocInfo::IsPosition(rmode)); |
| 2515 // These modes do not need an entry in the constant pool. | 2517 // These modes do not need an entry in the constant pool. |
| 2516 } else { | 2518 } else { |
| 2517 ASSERT(num_pending_reloc_info_ < kMaxNumPendingRelocInfo); | 2519 ASSERT(num_pending_reloc_info_ < kMaxNumPendingRelocInfo); |
| 2518 if (num_pending_reloc_info_ == 0) { | 2520 if (num_pending_reloc_info_ == 0) { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 2530 if (!Serializer::enabled()) { | 2532 if (!Serializer::enabled()) { |
| 2531 Serializer::TooLateToEnableNow(); | 2533 Serializer::TooLateToEnableNow(); |
| 2532 } | 2534 } |
| 2533 #endif | 2535 #endif |
| 2534 if (!Serializer::enabled() && !emit_debug_code()) { | 2536 if (!Serializer::enabled() && !emit_debug_code()) { |
| 2535 return; | 2537 return; |
| 2536 } | 2538 } |
| 2537 } | 2539 } |
| 2538 ASSERT(buffer_space() >= kMaxRelocSize); // too late to grow buffer here | 2540 ASSERT(buffer_space() >= kMaxRelocSize); // too late to grow buffer here |
| 2539 if (rmode == RelocInfo::CODE_TARGET_WITH_ID) { | 2541 if (rmode == RelocInfo::CODE_TARGET_WITH_ID) { |
| 2540 RelocInfo reloc_info_with_ast_id(pc_, rmode, RecordedAstId()); | 2542 RelocInfo reloc_info_with_ast_id(pc_, rmode, RecordedAstId(), NULL); |
| 2541 ClearRecordedAstId(); | 2543 ClearRecordedAstId(); |
| 2542 reloc_info_writer.Write(&reloc_info_with_ast_id); | 2544 reloc_info_writer.Write(&reloc_info_with_ast_id); |
| 2543 } else { | 2545 } else { |
| 2544 reloc_info_writer.Write(&rinfo); | 2546 reloc_info_writer.Write(&rinfo); |
| 2545 } | 2547 } |
| 2546 } | 2548 } |
| 2547 } | 2549 } |
| 2548 | 2550 |
| 2549 | 2551 |
| 2550 void Assembler::BlockConstPoolFor(int instructions) { | 2552 void Assembler::BlockConstPoolFor(int instructions) { |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2652 | 2654 |
| 2653 // Since a constant pool was just emitted, move the check offset forward by | 2655 // Since a constant pool was just emitted, move the check offset forward by |
| 2654 // the standard interval. | 2656 // the standard interval. |
| 2655 next_buffer_check_ = pc_offset() + kCheckPoolInterval; | 2657 next_buffer_check_ = pc_offset() + kCheckPoolInterval; |
| 2656 } | 2658 } |
| 2657 | 2659 |
| 2658 | 2660 |
| 2659 } } // namespace v8::internal | 2661 } } // namespace v8::internal |
| 2660 | 2662 |
| 2661 #endif // V8_TARGET_ARCH_ARM | 2663 #endif // V8_TARGET_ARCH_ARM |
| OLD | NEW |