Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(225)

Side by Side Diff: src/arm/assembler-arm.cc

Issue 7945009: Merge experimental/gc branch to the bleeding_edge. (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 9 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/arm/assembler-arm.h ('k') | src/arm/assembler-arm-inl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
OLDNEW
« no previous file with comments | « src/arm/assembler-arm.h ('k') | src/arm/assembler-arm-inl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698