| 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 403 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 414     // They use a custom noncompact encoding. | 414     // They use a custom noncompact encoding. | 
| 415     CONST_POOL, | 415     CONST_POOL, | 
| 416     VENEER_POOL, | 416     VENEER_POOL, | 
| 417 | 417 | 
| 418     DEOPT_REASON,  // Deoptimization reason index. | 418     DEOPT_REASON,  // Deoptimization reason index. | 
| 419     DEOPT_ID,      // Deoptimization inlining id. | 419     DEOPT_ID,      // Deoptimization inlining id. | 
| 420 | 420 | 
| 421     // This is not an actual reloc mode, but used to encode a long pc jump that | 421     // This is not an actual reloc mode, but used to encode a long pc jump that | 
| 422     // cannot be encoded as part of another record. | 422     // cannot be encoded as part of another record. | 
| 423     PC_JUMP, | 423     PC_JUMP, | 
| 424 | 424     WASM_DIRECT_CALL, | 
| 425     // Pseudo-types | 425     // Pseudo-types | 
| 426     NUMBER_OF_MODES, | 426     NUMBER_OF_MODES, | 
| 427     NONE32,             // never recorded 32-bit value | 427     NONE32,             // never recorded 32-bit value | 
| 428     NONE64,             // never recorded 64-bit value | 428     NONE64,             // never recorded 64-bit value | 
| 429     CODE_AGE_SEQUENCE,  // Not stored in RelocInfo array, used explictly by | 429     CODE_AGE_SEQUENCE,  // Not stored in RelocInfo array, used explictly by | 
| 430                         // code aging. | 430                         // code aging. | 
| 431 | 431 | 
| 432     FIRST_REAL_RELOC_MODE = CODE_TARGET, | 432     FIRST_REAL_RELOC_MODE = CODE_TARGET, | 
| 433     LAST_REAL_RELOC_MODE = VENEER_POOL, | 433     LAST_REAL_RELOC_MODE = VENEER_POOL, | 
| 434     LAST_CODE_ENUM = DEBUGGER_STATEMENT, | 434     LAST_CODE_ENUM = DEBUGGER_STATEMENT, | 
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 522   } | 522   } | 
| 523   static inline bool IsGeneratorContinuation(Mode mode) { | 523   static inline bool IsGeneratorContinuation(Mode mode) { | 
| 524     return mode == GENERATOR_CONTINUATION; | 524     return mode == GENERATOR_CONTINUATION; | 
| 525   } | 525   } | 
| 526   static inline bool IsWasmMemoryReference(Mode mode) { | 526   static inline bool IsWasmMemoryReference(Mode mode) { | 
| 527     return mode == WASM_MEMORY_REFERENCE; | 527     return mode == WASM_MEMORY_REFERENCE; | 
| 528   } | 528   } | 
| 529   static inline bool IsWasmMemorySizeReference(Mode mode) { | 529   static inline bool IsWasmMemorySizeReference(Mode mode) { | 
| 530     return mode == WASM_MEMORY_SIZE_REFERENCE; | 530     return mode == WASM_MEMORY_SIZE_REFERENCE; | 
| 531   } | 531   } | 
|  | 532   static inline bool IsWasmDirectCall(Mode mode) { | 
|  | 533     return mode == WASM_DIRECT_CALL; | 
|  | 534   } | 
| 532   static inline int ModeMask(Mode mode) { return 1 << mode; } | 535   static inline int ModeMask(Mode mode) { return 1 << mode; } | 
| 533 | 536 | 
| 534   // Accessors | 537   // Accessors | 
| 535   Isolate* isolate() const { return isolate_; } | 538   Isolate* isolate() const { return isolate_; } | 
| 536   byte* pc() const { return pc_; } | 539   byte* pc() const { return pc_; } | 
| 537   void set_pc(byte* pc) { pc_ = pc; } | 540   void set_pc(byte* pc) { pc_ = pc; } | 
| 538   Mode rmode() const {  return rmode_; } | 541   Mode rmode() const {  return rmode_; } | 
| 539   intptr_t data() const { return data_; } | 542   intptr_t data() const { return data_; } | 
| 540   Code* host() const { return host_; } | 543   Code* host() const { return host_; } | 
| 541   void set_host(Code* host) { host_ = host; } | 544   void set_host(Code* host) { host_ = host; } | 
| 542 | 545 | 
| 543   // Apply a relocation by delta bytes. When the code object is moved, PC | 546   // Apply a relocation by delta bytes. When the code object is moved, PC | 
| 544   // relative addresses have to be updated as well as absolute addresses | 547   // relative addresses have to be updated as well as absolute addresses | 
| 545   // inside the code (internal references). | 548   // inside the code (internal references). | 
| 546   // Do not forget to flush the icache afterwards! | 549   // Do not forget to flush the icache afterwards! | 
| 547   INLINE(void apply(intptr_t delta)); | 550   INLINE(void apply(intptr_t delta)); | 
| 548 | 551 | 
| 549   // Is the pointer this relocation info refers to coded like a plain pointer | 552   // Is the pointer this relocation info refers to coded like a plain pointer | 
| 550   // or is it strange in some way (e.g. relative or patched into a series of | 553   // or is it strange in some way (e.g. relative or patched into a series of | 
| 551   // instructions). | 554   // instructions). | 
| 552   bool IsCodedSpecially(); | 555   bool IsCodedSpecially(); | 
| 553 | 556 | 
| 554   // If true, the pointer this relocation info refers to is an entry in the | 557   // If true, the pointer this relocation info refers to is an entry in the | 
| 555   // constant pool, otherwise the pointer is embedded in the instruction stream. | 558   // constant pool, otherwise the pointer is embedded in the instruction stream. | 
| 556   bool IsInConstantPool(); | 559   bool IsInConstantPool(); | 
| 557 | 560 | 
| 558   Address wasm_memory_reference(); | 561   Address wasm_memory_reference(); | 
| 559   uint32_t wasm_memory_size_reference(); | 562   uint32_t wasm_memory_size_reference(); | 
|  | 563   uint32_t wasm_function_index(); | 
|  | 564 | 
| 560   void update_wasm_memory_reference( | 565   void update_wasm_memory_reference( | 
| 561       Address old_base, Address new_base, uint32_t old_size, uint32_t new_size, | 566       Address old_base, Address new_base, uint32_t old_size, uint32_t new_size, | 
| 562       ICacheFlushMode icache_flush_mode = SKIP_ICACHE_FLUSH); | 567       ICacheFlushMode icache_flush_mode = SKIP_ICACHE_FLUSH); | 
| 563 | 568 | 
| 564   // this relocation applies to; | 569   // this relocation applies to; | 
| 565   // can only be called if IsCodeTarget(rmode_) || IsRuntimeEntry(rmode_) | 570   // can only be called if IsCodeTarget(rmode_) || IsRuntimeEntry(rmode_) | 
| 566   INLINE(Address target_address()); | 571   INLINE(Address target_address()); | 
| 567   INLINE(void set_target_address(Address target, | 572   INLINE(void set_target_address(Address target, | 
| 568                                  WriteBarrierMode write_barrier_mode = | 573                                  WriteBarrierMode write_barrier_mode = | 
| 569                                      UPDATE_WRITE_BARRIER, | 574                                      UPDATE_WRITE_BARRIER, | 
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 658 #ifdef ENABLE_DISASSEMBLER | 663 #ifdef ENABLE_DISASSEMBLER | 
| 659   // Printing | 664   // Printing | 
| 660   static const char* RelocModeName(Mode rmode); | 665   static const char* RelocModeName(Mode rmode); | 
| 661   void Print(Isolate* isolate, std::ostream& os);  // NOLINT | 666   void Print(Isolate* isolate, std::ostream& os);  // NOLINT | 
| 662 #endif  // ENABLE_DISASSEMBLER | 667 #endif  // ENABLE_DISASSEMBLER | 
| 663 #ifdef VERIFY_HEAP | 668 #ifdef VERIFY_HEAP | 
| 664   void Verify(Isolate* isolate); | 669   void Verify(Isolate* isolate); | 
| 665 #endif | 670 #endif | 
| 666 | 671 | 
| 667   static const int kCodeTargetMask = (1 << (LAST_CODE_ENUM + 1)) - 1; | 672   static const int kCodeTargetMask = (1 << (LAST_CODE_ENUM + 1)) - 1; | 
|  | 673   static const int kWasmDirectCallMask = 1 << WASM_DIRECT_CALL; | 
| 668   static const int kPositionMask = 1 << POSITION | 1 << STATEMENT_POSITION; | 674   static const int kPositionMask = 1 << POSITION | 1 << STATEMENT_POSITION; | 
| 669   static const int kDataMask = | 675   static const int kDataMask = | 
| 670       (1 << CODE_TARGET_WITH_ID) | kPositionMask | (1 << COMMENT); | 676       (1 << CODE_TARGET_WITH_ID) | kPositionMask | (1 << COMMENT); | 
| 671   static const int kDebugBreakSlotMask = 1 << DEBUG_BREAK_SLOT_AT_POSITION | | 677   static const int kDebugBreakSlotMask = 1 << DEBUG_BREAK_SLOT_AT_POSITION | | 
| 672                                          1 << DEBUG_BREAK_SLOT_AT_RETURN | | 678                                          1 << DEBUG_BREAK_SLOT_AT_RETURN | | 
| 673                                          1 << DEBUG_BREAK_SLOT_AT_CALL; | 679                                          1 << DEBUG_BREAK_SLOT_AT_CALL; | 
| 674   static const int kApplyMask;  // Modes affected by apply.  Depends on arch. | 680   static const int kApplyMask;  // Modes affected by apply.  Depends on arch. | 
| 675 | 681 | 
| 676  private: | 682  private: | 
| 677   Isolate* isolate_; | 683   Isolate* isolate_; | 
| (...skipping 658 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1336     std::vector<ConstantPoolEntry> shared_entries; | 1342     std::vector<ConstantPoolEntry> shared_entries; | 
| 1337   }; | 1343   }; | 
| 1338 | 1344 | 
| 1339   Label emitted_label_;  // Records pc_offset of emitted pool | 1345   Label emitted_label_;  // Records pc_offset of emitted pool | 
| 1340   PerTypeEntryInfo info_[ConstantPoolEntry::NUMBER_OF_TYPES]; | 1346   PerTypeEntryInfo info_[ConstantPoolEntry::NUMBER_OF_TYPES]; | 
| 1341 }; | 1347 }; | 
| 1342 | 1348 | 
| 1343 }  // namespace internal | 1349 }  // namespace internal | 
| 1344 }  // namespace v8 | 1350 }  // namespace v8 | 
| 1345 #endif  // V8_ASSEMBLER_H_ | 1351 #endif  // V8_ASSEMBLER_H_ | 
| OLD | NEW | 
|---|