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 are | 5 // modification, are permitted provided that the following conditions are |
6 // met: | 6 // 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 507 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
518 // buffer, and buffer_size determines the initial buffer size. The buffer is | 518 // buffer, and buffer_size determines the initial buffer size. The buffer is |
519 // owned by the assembler and deallocated upon destruction of the assembler. | 519 // owned by the assembler and deallocated upon destruction of the assembler. |
520 // | 520 // |
521 // If the provided buffer is not NULL, the assembler uses the provided buffer | 521 // If the provided buffer is not NULL, the assembler uses the provided buffer |
522 // for code generation and assumes its size to be buffer_size. If the buffer | 522 // for code generation and assumes its size to be buffer_size. If the buffer |
523 // is too small, a fatal error occurs. No deallocation of the buffer is done | 523 // is too small, a fatal error occurs. No deallocation of the buffer is done |
524 // upon destruction of the assembler. | 524 // upon destruction of the assembler. |
525 Assembler(Isolate* isolate, void* buffer, int buffer_size); | 525 Assembler(Isolate* isolate, void* buffer, int buffer_size); |
526 ~Assembler(); | 526 ~Assembler(); |
527 | 527 |
528 // Overrides the default provided by FLAG_debug_code. | |
529 void set_emit_debug_code(bool value) { emit_debug_code_ = value; } | |
530 | |
531 // Dummy for cross platform compatibility. | 528 // Dummy for cross platform compatibility. |
532 void set_predictable_code_size(bool value) { } | 529 void set_predictable_code_size(bool value) { } |
533 | 530 |
534 // GetCode emits any pending (non-emitted) code and fills the descriptor | 531 // GetCode emits any pending (non-emitted) code and fills the descriptor |
535 // desc. GetCode() is idempotent; it returns the same result if no other | 532 // desc. GetCode() is idempotent; it returns the same result if no other |
536 // Assembler functions are invoked in between GetCode() calls. | 533 // Assembler functions are invoked in between GetCode() calls. |
537 void GetCode(CodeDesc* desc); | 534 void GetCode(CodeDesc* desc); |
538 | 535 |
539 // Label operations & relative jumps (PPUM Appendix D). | 536 // Label operations & relative jumps (PPUM Appendix D). |
540 // | 537 // |
(...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1026 static bool IsAndImmediate(Instr instr); | 1023 static bool IsAndImmediate(Instr instr); |
1027 | 1024 |
1028 void CheckTrampolinePool(); | 1025 void CheckTrampolinePool(); |
1029 | 1026 |
1030 protected: | 1027 protected: |
1031 // Relocation for a type-recording IC has the AST id added to it. This | 1028 // Relocation for a type-recording IC has the AST id added to it. This |
1032 // member variable is a way to pass the information from the call site to | 1029 // member variable is a way to pass the information from the call site to |
1033 // the relocation info. | 1030 // the relocation info. |
1034 TypeFeedbackId recorded_ast_id_; | 1031 TypeFeedbackId recorded_ast_id_; |
1035 | 1032 |
1036 bool emit_debug_code() const { return emit_debug_code_; } | |
1037 | |
1038 int32_t buffer_space() const { return reloc_info_writer.pos() - pc_; } | 1033 int32_t buffer_space() const { return reloc_info_writer.pos() - pc_; } |
1039 | 1034 |
1040 // Decode branch instruction at pos and return branch target pos. | 1035 // Decode branch instruction at pos and return branch target pos. |
1041 int target_at(int32_t pos); | 1036 int target_at(int32_t pos); |
1042 | 1037 |
1043 // Patch branch instruction at pos to branch to given branch target pos. | 1038 // Patch branch instruction at pos to branch to given branch target pos. |
1044 void target_at_put(int32_t pos, int32_t target_pos); | 1039 void target_at_put(int32_t pos, int32_t target_pos); |
1045 | 1040 |
1046 // Say if we need to relocate with this mode. | 1041 // Say if we need to relocate with this mode. |
1047 bool MustUseReg(RelocInfo::Mode rmode); | 1042 bool MustUseReg(RelocInfo::Mode rmode); |
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1278 | 1273 |
1279 Trampoline trampoline_; | 1274 Trampoline trampoline_; |
1280 bool internal_trampoline_exception_; | 1275 bool internal_trampoline_exception_; |
1281 | 1276 |
1282 friend class RegExpMacroAssemblerMIPS; | 1277 friend class RegExpMacroAssemblerMIPS; |
1283 friend class RelocInfo; | 1278 friend class RelocInfo; |
1284 friend class CodePatcher; | 1279 friend class CodePatcher; |
1285 friend class BlockTrampolinePoolScope; | 1280 friend class BlockTrampolinePoolScope; |
1286 | 1281 |
1287 PositionsRecorder positions_recorder_; | 1282 PositionsRecorder positions_recorder_; |
1288 bool emit_debug_code_; | |
1289 friend class PositionsRecorder; | 1283 friend class PositionsRecorder; |
1290 friend class EnsureSpace; | 1284 friend class EnsureSpace; |
1291 }; | 1285 }; |
1292 | 1286 |
1293 | 1287 |
1294 class EnsureSpace BASE_EMBEDDED { | 1288 class EnsureSpace BASE_EMBEDDED { |
1295 public: | 1289 public: |
1296 explicit EnsureSpace(Assembler* assembler) { | 1290 explicit EnsureSpace(Assembler* assembler) { |
1297 assembler->CheckBuffer(); | 1291 assembler->CheckBuffer(); |
1298 } | 1292 } |
1299 }; | 1293 }; |
1300 | 1294 |
1301 } } // namespace v8::internal | 1295 } } // namespace v8::internal |
1302 | 1296 |
1303 #endif // V8_ARM_ASSEMBLER_MIPS_H_ | 1297 #endif // V8_ARM_ASSEMBLER_MIPS_H_ |
OLD | NEW |