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

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

Issue 358363002: Move platform abstraction to base library (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: updates Created 6 years, 5 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
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 20 matching lines...) Expand all
31 // OF THE POSSIBILITY OF SUCH DAMAGE. 31 // OF THE POSSIBILITY OF SUCH DAMAGE.
32 32
33 // The original source code covered by the above license above has been modified 33 // The original source code covered by the above license above has been modified
34 // significantly by Google Inc. 34 // significantly by Google Inc.
35 // Copyright 2012 the V8 project authors. All rights reserved. 35 // Copyright 2012 the V8 project authors. All rights reserved.
36 36
37 #include "src/v8.h" 37 #include "src/v8.h"
38 38
39 #if V8_TARGET_ARCH_IA32 39 #if V8_TARGET_ARCH_IA32
40 40
41 #include "src/base/cpu.h"
41 #include "src/disassembler.h" 42 #include "src/disassembler.h"
42 #include "src/macro-assembler.h" 43 #include "src/macro-assembler.h"
43 #include "src/serialize.h" 44 #include "src/serialize.h"
44 45
45 namespace v8 { 46 namespace v8 {
46 namespace internal { 47 namespace internal {
47 48
48 // ----------------------------------------------------------------------------- 49 // -----------------------------------------------------------------------------
49 // Implementation of CpuFeatures 50 // Implementation of CpuFeatures
50 51
51 void CpuFeatures::ProbeImpl(bool cross_compile) { 52 void CpuFeatures::ProbeImpl(bool cross_compile) {
52 CPU cpu; 53 base::CPU cpu;
53 CHECK(cpu.has_sse2()); // SSE2 support is mandatory. 54 CHECK(cpu.has_sse2()); // SSE2 support is mandatory.
54 CHECK(cpu.has_cmov()); // CMOV support is mandatory. 55 CHECK(cpu.has_cmov()); // CMOV support is mandatory.
55 56
56 // Only use statically determined features for cross compile (snapshot). 57 // Only use statically determined features for cross compile (snapshot).
57 if (cross_compile) return; 58 if (cross_compile) return;
58 59
59 if (cpu.has_sse41() && FLAG_enable_sse4_1) supported_ |= 1u << SSE4_1; 60 if (cpu.has_sse41() && FLAG_enable_sse4_1) supported_ |= 1u << SSE4_1;
60 if (cpu.has_sse3() && FLAG_enable_sse3) supported_ |= 1u << SSE3; 61 if (cpu.has_sse3() && FLAG_enable_sse3) supported_ |= 1u << SSE3;
61 } 62 }
62 63
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 } 106 }
106 107
107 108
108 void RelocInfo::PatchCode(byte* instructions, int instruction_count) { 109 void RelocInfo::PatchCode(byte* instructions, int instruction_count) {
109 // Patch the code at the current address with the supplied instructions. 110 // Patch the code at the current address with the supplied instructions.
110 for (int i = 0; i < instruction_count; i++) { 111 for (int i = 0; i < instruction_count; i++) {
111 *(pc_ + i) = *(instructions + i); 112 *(pc_ + i) = *(instructions + i);
112 } 113 }
113 114
114 // Indicate that code has changed. 115 // Indicate that code has changed.
115 CPU::FlushICache(pc_, instruction_count); 116 CpuFeatures::FlushICache(pc_, instruction_count);
116 } 117 }
117 118
118 119
119 // Patch the code at the current PC with a call to the target address. 120 // Patch the code at the current PC with a call to the target address.
120 // Additional guard int3 instructions can be added if required. 121 // Additional guard int3 instructions can be added if required.
121 void RelocInfo::PatchCodeWithCall(Address target, int guard_bytes) { 122 void RelocInfo::PatchCodeWithCall(Address target, int guard_bytes) {
122 // Call instruction takes up 5 bytes and int3 takes up one byte. 123 // Call instruction takes up 5 bytes and int3 takes up one byte.
123 static const int kCallCodeSize = 5; 124 static const int kCallCodeSize = 5;
124 int code_size = kCallCodeSize + guard_bytes; 125 int code_size = kCallCodeSize + guard_bytes;
125 126
(...skipping 2510 matching lines...) Expand 10 before | Expand all | Expand 10 after
2636 fprintf(coverage_log, "%s\n", file_line); 2637 fprintf(coverage_log, "%s\n", file_line);
2637 fflush(coverage_log); 2638 fflush(coverage_log);
2638 } 2639 }
2639 } 2640 }
2640 2641
2641 #endif 2642 #endif
2642 2643
2643 } } // namespace v8::internal 2644 } } // namespace v8::internal
2644 2645
2645 #endif // V8_TARGET_ARCH_IA32 2646 #endif // V8_TARGET_ARCH_IA32
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698