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

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

Issue 6713074: Require an isolate parameter for most external reference creation to (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 9 years, 9 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 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 520 matching lines...) Expand 10 before | Expand all | Expand 10 after
531 // buffer, and buffer_size determines the initial buffer size. The buffer is 531 // buffer, and buffer_size determines the initial buffer size. The buffer is
532 // owned by the assembler and deallocated upon destruction of the assembler. 532 // owned by the assembler and deallocated upon destruction of the assembler.
533 // 533 //
534 // If the provided buffer is not NULL, the assembler uses the provided buffer 534 // If the provided buffer is not NULL, the assembler uses the provided buffer
535 // for code generation and assumes its size to be buffer_size. If the buffer 535 // for code generation and assumes its size to be buffer_size. If the buffer
536 // is too small, a fatal error occurs. No deallocation of the buffer is done 536 // is too small, a fatal error occurs. No deallocation of the buffer is done
537 // upon destruction of the assembler. 537 // upon destruction of the assembler.
538 Assembler(void* buffer, int buffer_size); 538 Assembler(void* buffer, int buffer_size);
539 ~Assembler(); 539 ~Assembler();
540 540
541 // Access the isolate with which the assembler is associated.
542 Isolate* isolate() { return isolate_; }
543
541 // Overrides the default provided by FLAG_debug_code. 544 // Overrides the default provided by FLAG_debug_code.
542 void set_emit_debug_code(bool value) { emit_debug_code_ = value; } 545 void set_emit_debug_code(bool value) { emit_debug_code_ = value; }
543 546
544 // GetCode emits any pending (non-emitted) code and fills the descriptor 547 // GetCode emits any pending (non-emitted) code and fills the descriptor
545 // desc. GetCode() is idempotent; it returns the same result if no other 548 // desc. GetCode() is idempotent; it returns the same result if no other
546 // Assembler functions are invoked in between GetCode() calls. 549 // Assembler functions are invoked in between GetCode() calls.
547 void GetCode(CodeDesc* desc); 550 void GetCode(CodeDesc* desc);
548 551
549 // Read/Modify the code target in the branch/call instruction at pc. 552 // Read/Modify the code target in the branch/call instruction at pc.
550 inline static Address target_address_at(Address pc); 553 inline static Address target_address_at(Address pc);
(...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after
1003 protected: 1006 protected:
1004 bool emit_debug_code() const { return emit_debug_code_; } 1007 bool emit_debug_code() const { return emit_debug_code_; }
1005 1008
1006 void movsd(XMMRegister dst, const Operand& src); 1009 void movsd(XMMRegister dst, const Operand& src);
1007 void movsd(const Operand& dst, XMMRegister src); 1010 void movsd(const Operand& dst, XMMRegister src);
1008 1011
1009 void emit_sse_operand(XMMRegister reg, const Operand& adr); 1012 void emit_sse_operand(XMMRegister reg, const Operand& adr);
1010 void emit_sse_operand(XMMRegister dst, XMMRegister src); 1013 void emit_sse_operand(XMMRegister dst, XMMRegister src);
1011 void emit_sse_operand(Register dst, XMMRegister src); 1014 void emit_sse_operand(Register dst, XMMRegister src);
1012 1015
1013 byte* addr_at(int pos) { return buffer_ + pos; } 1016 byte* addr_at(int pos) { return buffer_ + pos; }
1017
1014 private: 1018 private:
1015 byte byte_at(int pos) { return buffer_[pos]; } 1019 byte byte_at(int pos) { return buffer_[pos]; }
1016 void set_byte_at(int pos, byte value) { buffer_[pos] = value; } 1020 void set_byte_at(int pos, byte value) { buffer_[pos] = value; }
1017 uint32_t long_at(int pos) { 1021 uint32_t long_at(int pos) {
1018 return *reinterpret_cast<uint32_t*>(addr_at(pos)); 1022 return *reinterpret_cast<uint32_t*>(addr_at(pos));
1019 } 1023 }
1020 void long_at_put(int pos, uint32_t x) { 1024 void long_at_put(int pos, uint32_t x) {
1021 *reinterpret_cast<uint32_t*>(addr_at(pos)) = x; 1025 *reinterpret_cast<uint32_t*>(addr_at(pos)) = x;
1022 } 1026 }
1023 1027
(...skipping 29 matching lines...) Expand all
1053 inline Displacement disp_at(Label* L); 1057 inline Displacement disp_at(Label* L);
1054 inline void disp_at_put(Label* L, Displacement disp); 1058 inline void disp_at_put(Label* L, Displacement disp);
1055 inline void emit_disp(Label* L, Displacement::Type type); 1059 inline void emit_disp(Label* L, Displacement::Type type);
1056 1060
1057 // record reloc info for current pc_ 1061 // record reloc info for current pc_
1058 void RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data = 0); 1062 void RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data = 0);
1059 1063
1060 friend class CodePatcher; 1064 friend class CodePatcher;
1061 friend class EnsureSpace; 1065 friend class EnsureSpace;
1062 1066
1067 Isolate* isolate_;
1068
1063 // Code buffer: 1069 // Code buffer:
1064 // The buffer into which code and relocation info are generated. 1070 // The buffer into which code and relocation info are generated.
1065 byte* buffer_; 1071 byte* buffer_;
1066 int buffer_size_; 1072 int buffer_size_;
1067 // True if the assembler owns the buffer, false if buffer is external. 1073 // True if the assembler owns the buffer, false if buffer is external.
1068 bool own_buffer_; 1074 bool own_buffer_;
1069 1075
1070 // code generation 1076 // code generation
1071 byte* pc_; // the program counter; moves forward 1077 byte* pc_; // the program counter; moves forward
1072 RelocInfoWriter reloc_info_writer; 1078 RelocInfoWriter reloc_info_writer;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1105 private: 1111 private:
1106 Assembler* assembler_; 1112 Assembler* assembler_;
1107 #ifdef DEBUG 1113 #ifdef DEBUG
1108 int space_before_; 1114 int space_before_;
1109 #endif 1115 #endif
1110 }; 1116 };
1111 1117
1112 } } // namespace v8::internal 1118 } } // namespace v8::internal
1113 1119
1114 #endif // V8_IA32_ASSEMBLER_IA32_H_ 1120 #endif // V8_IA32_ASSEMBLER_IA32_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698