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

Side by Side Diff: src/assembler.h

Issue 1477343002: Pass an isolate to RelocInfo (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: updates Created 5 years 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
« no previous file with comments | « src/arm64/assembler-arm64.cc ('k') | src/assembler.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 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 414 matching lines...) Expand 10 before | Expand all | Expand 10 after
425 // code aging. 425 // code aging.
426 426
427 FIRST_REAL_RELOC_MODE = CODE_TARGET, 427 FIRST_REAL_RELOC_MODE = CODE_TARGET,
428 LAST_REAL_RELOC_MODE = VENEER_POOL, 428 LAST_REAL_RELOC_MODE = VENEER_POOL,
429 LAST_CODE_ENUM = DEBUGGER_STATEMENT, 429 LAST_CODE_ENUM = DEBUGGER_STATEMENT,
430 LAST_GCED_ENUM = CELL, 430 LAST_GCED_ENUM = CELL,
431 }; 431 };
432 432
433 STATIC_ASSERT(NUMBER_OF_MODES <= kBitsPerInt); 433 STATIC_ASSERT(NUMBER_OF_MODES <= kBitsPerInt);
434 434
435 RelocInfo() {} 435 explicit RelocInfo(Isolate* isolate) : isolate_(isolate) {
436 DCHECK_NOT_NULL(isolate);
437 }
436 438
437 RelocInfo(byte* pc, Mode rmode, intptr_t data, Code* host) 439 RelocInfo(Isolate* isolate, byte* pc, Mode rmode, intptr_t data, Code* host)
438 : pc_(pc), rmode_(rmode), data_(data), host_(host) { 440 : isolate_(isolate), pc_(pc), rmode_(rmode), data_(data), host_(host) {
441 DCHECK_NOT_NULL(isolate);
439 } 442 }
440 443
441 static inline bool IsRealRelocMode(Mode mode) { 444 static inline bool IsRealRelocMode(Mode mode) {
442 return mode >= FIRST_REAL_RELOC_MODE && 445 return mode >= FIRST_REAL_RELOC_MODE &&
443 mode <= LAST_REAL_RELOC_MODE; 446 mode <= LAST_REAL_RELOC_MODE;
444 } 447 }
445 static inline bool IsConstructCall(Mode mode) { 448 static inline bool IsConstructCall(Mode mode) {
446 return mode == CONSTRUCT_CALL; 449 return mode == CONSTRUCT_CALL;
447 } 450 }
448 static inline bool IsCodeTarget(Mode mode) { 451 static inline bool IsCodeTarget(Mode mode) {
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
511 } 514 }
512 static inline bool IsCodeAgeSequence(Mode mode) { 515 static inline bool IsCodeAgeSequence(Mode mode) {
513 return mode == CODE_AGE_SEQUENCE; 516 return mode == CODE_AGE_SEQUENCE;
514 } 517 }
515 static inline bool IsGeneratorContinuation(Mode mode) { 518 static inline bool IsGeneratorContinuation(Mode mode) {
516 return mode == GENERATOR_CONTINUATION; 519 return mode == GENERATOR_CONTINUATION;
517 } 520 }
518 static inline int ModeMask(Mode mode) { return 1 << mode; } 521 static inline int ModeMask(Mode mode) { return 1 << mode; }
519 522
520 // Accessors 523 // Accessors
524 Isolate* isolate() const { return isolate_; }
521 byte* pc() const { return pc_; } 525 byte* pc() const { return pc_; }
522 void set_pc(byte* pc) { pc_ = pc; } 526 void set_pc(byte* pc) { pc_ = pc; }
523 Mode rmode() const { return rmode_; } 527 Mode rmode() const { return rmode_; }
524 intptr_t data() const { return data_; } 528 intptr_t data() const { return data_; }
525 Code* host() const { return host_; } 529 Code* host() const { return host_; }
526 void set_host(Code* host) { host_ = host; } 530 void set_host(Code* host) { host_ = host; }
527 531
528 // Apply a relocation by delta bytes. When the code object is moved, PC 532 // Apply a relocation by delta bytes. When the code object is moved, PC
529 // relative addresses have to be updated as well as absolute addresses 533 // relative addresses have to be updated as well as absolute addresses
530 // inside the code (internal references). 534 // inside the code (internal references).
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
651 static const int kCodeTargetMask = (1 << (LAST_CODE_ENUM + 1)) - 1; 655 static const int kCodeTargetMask = (1 << (LAST_CODE_ENUM + 1)) - 1;
652 static const int kPositionMask = 1 << POSITION | 1 << STATEMENT_POSITION; 656 static const int kPositionMask = 1 << POSITION | 1 << STATEMENT_POSITION;
653 static const int kDataMask = 657 static const int kDataMask =
654 (1 << CODE_TARGET_WITH_ID) | kPositionMask | (1 << COMMENT); 658 (1 << CODE_TARGET_WITH_ID) | kPositionMask | (1 << COMMENT);
655 static const int kDebugBreakSlotMask = 659 static const int kDebugBreakSlotMask =
656 1 << DEBUG_BREAK_SLOT_AT_POSITION | 1 << DEBUG_BREAK_SLOT_AT_RETURN | 660 1 << DEBUG_BREAK_SLOT_AT_POSITION | 1 << DEBUG_BREAK_SLOT_AT_RETURN |
657 1 << DEBUG_BREAK_SLOT_AT_CALL | 1 << DEBUG_BREAK_SLOT_AT_CONSTRUCT_CALL; 661 1 << DEBUG_BREAK_SLOT_AT_CALL | 1 << DEBUG_BREAK_SLOT_AT_CONSTRUCT_CALL;
658 static const int kApplyMask; // Modes affected by apply. Depends on arch. 662 static const int kApplyMask; // Modes affected by apply. Depends on arch.
659 663
660 private: 664 private:
665 Isolate* isolate_;
661 // On ARM, note that pc_ is the address of the constant pool entry 666 // On ARM, note that pc_ is the address of the constant pool entry
662 // to be relocated and not the address of the instruction 667 // to be relocated and not the address of the instruction
663 // referencing the constant pool entry (except when rmode_ == 668 // referencing the constant pool entry (except when rmode_ ==
664 // comment). 669 // comment).
665 byte* pc_; 670 byte* pc_;
666 Mode rmode_; 671 Mode rmode_;
667 intptr_t data_; 672 intptr_t data_;
668 Code* host_; 673 Code* host_;
669 friend class RelocIterator; 674 friend class RelocIterator;
670 }; 675 };
(...skipping 619 matching lines...) Expand 10 before | Expand all | Expand 10 after
1290 std::vector<ConstantPoolEntry> shared_entries; 1295 std::vector<ConstantPoolEntry> shared_entries;
1291 }; 1296 };
1292 1297
1293 Label emitted_label_; // Records pc_offset of emitted pool 1298 Label emitted_label_; // Records pc_offset of emitted pool
1294 PerTypeEntryInfo info_[ConstantPoolEntry::NUMBER_OF_TYPES]; 1299 PerTypeEntryInfo info_[ConstantPoolEntry::NUMBER_OF_TYPES];
1295 }; 1300 };
1296 1301
1297 } // namespace internal 1302 } // namespace internal
1298 } // namespace v8 1303 } // namespace v8
1299 #endif // V8_ASSEMBLER_H_ 1304 #endif // V8_ASSEMBLER_H_
OLDNEW
« no previous file with comments | « src/arm64/assembler-arm64.cc ('k') | src/assembler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698