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

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

Issue 7003025: Remove peephole optimiziations from IA32 and ARM assembler. (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 9 years, 7 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 | « no previous file | src/arm/assembler-arm.cc » ('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 1168 matching lines...) Expand 10 before | Expand all | Expand 10 after
1179 // for inline tables, e.g., jump-tables. The constant pool should be 1179 // for inline tables, e.g., jump-tables. The constant pool should be
1180 // emitted before any use of db and dd to ensure that constant pools 1180 // emitted before any use of db and dd to ensure that constant pools
1181 // are not emitted as part of the tables generated. 1181 // are not emitted as part of the tables generated.
1182 void db(uint8_t data); 1182 void db(uint8_t data);
1183 void dd(uint32_t data); 1183 void dd(uint32_t data);
1184 1184
1185 int pc_offset() const { return pc_ - buffer_; } 1185 int pc_offset() const { return pc_ - buffer_; }
1186 1186
1187 PositionsRecorder* positions_recorder() { return &positions_recorder_; } 1187 PositionsRecorder* positions_recorder() { return &positions_recorder_; }
1188 1188
1189 bool can_peephole_optimize(int instructions) {
1190 if (!allow_peephole_optimization_) return false;
1191 if (last_bound_pos_ > pc_offset() - instructions * kInstrSize) return false;
1192 return reloc_info_writer.last_pc() <= pc_ - instructions * kInstrSize;
1193 }
1194
1195 // Read/patch instructions 1189 // Read/patch instructions
1196 static Instr instr_at(byte* pc) { return *reinterpret_cast<Instr*>(pc); } 1190 static Instr instr_at(byte* pc) { return *reinterpret_cast<Instr*>(pc); }
1197 static void instr_at_put(byte* pc, Instr instr) { 1191 static void instr_at_put(byte* pc, Instr instr) {
1198 *reinterpret_cast<Instr*>(pc) = instr; 1192 *reinterpret_cast<Instr*>(pc) = instr;
1199 } 1193 }
1200 static Condition GetCondition(Instr instr); 1194 static Condition GetCondition(Instr instr);
1201 static bool IsBranch(Instr instr); 1195 static bool IsBranch(Instr instr);
1202 static int GetBranchOffset(Instr instr); 1196 static int GetBranchOffset(Instr instr);
1203 static bool IsLdrRegisterImmediate(Instr instr); 1197 static bool IsLdrRegisterImmediate(Instr instr);
1204 static int GetLdrRegisterImmediateOffset(Instr instr); 1198 static int GetLdrRegisterImmediateOffset(Instr instr);
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
1355 1349
1356 // Record reloc info for current pc_ 1350 // Record reloc info for current pc_
1357 void RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data = 0); 1351 void RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data = 0);
1358 1352
1359 friend class RegExpMacroAssemblerARM; 1353 friend class RegExpMacroAssemblerARM;
1360 friend class RelocInfo; 1354 friend class RelocInfo;
1361 friend class CodePatcher; 1355 friend class CodePatcher;
1362 friend class BlockConstPoolScope; 1356 friend class BlockConstPoolScope;
1363 1357
1364 PositionsRecorder positions_recorder_; 1358 PositionsRecorder positions_recorder_;
1365 bool allow_peephole_optimization_;
1366 bool emit_debug_code_; 1359 bool emit_debug_code_;
1367 friend class PositionsRecorder; 1360 friend class PositionsRecorder;
1368 friend class EnsureSpace; 1361 friend class EnsureSpace;
1369 }; 1362 };
1370 1363
1371 1364
1372 class EnsureSpace BASE_EMBEDDED { 1365 class EnsureSpace BASE_EMBEDDED {
1373 public: 1366 public:
1374 explicit EnsureSpace(Assembler* assembler) { 1367 explicit EnsureSpace(Assembler* assembler) {
1375 assembler->CheckBuffer(); 1368 assembler->CheckBuffer();
1376 } 1369 }
1377 }; 1370 };
1378 1371
1379 1372
1380 } } // namespace v8::internal 1373 } } // namespace v8::internal
1381 1374
1382 #endif // V8_ARM_ASSEMBLER_ARM_H_ 1375 #endif // V8_ARM_ASSEMBLER_ARM_H_
OLDNEW
« no previous file with comments | « no previous file | src/arm/assembler-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698