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

Side by Side Diff: src/x64/macro-assembler-x64.h

Issue 2732273003: Disentangle assembler from isolate. (Closed)
Patch Set: Address feedback. Created 3 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
« no previous file with comments | « src/x64/codegen-x64.cc ('k') | src/x64/macro-assembler-x64.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_X64_MACRO_ASSEMBLER_X64_H_ 5 #ifndef V8_X64_MACRO_ASSEMBLER_X64_H_
6 #define V8_X64_MACRO_ASSEMBLER_X64_H_ 6 #define V8_X64_MACRO_ASSEMBLER_X64_H_
7 7
8 #include "src/assembler.h"
9 #include "src/bailout-reason.h" 8 #include "src/bailout-reason.h"
10 #include "src/base/flags.h" 9 #include "src/base/flags.h"
11 #include "src/frames.h" 10 #include "src/frames.h"
12 #include "src/globals.h" 11 #include "src/globals.h"
13 #include "src/x64/assembler-x64.h" 12 #include "src/x64/assembler-x64.h"
14 #include "src/x64/frames-x64.h" 13 #include "src/x64/frames-x64.h"
15 14
16 namespace v8 { 15 namespace v8 {
17 namespace internal { 16 namespace internal {
18 17
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 ScaleFactor scale; 85 ScaleFactor scale;
87 }; 86 };
88 87
89 88
90 // MacroAssembler implements a collection of frequently used macros. 89 // MacroAssembler implements a collection of frequently used macros.
91 class MacroAssembler: public Assembler { 90 class MacroAssembler: public Assembler {
92 public: 91 public:
93 MacroAssembler(Isolate* isolate, void* buffer, int size, 92 MacroAssembler(Isolate* isolate, void* buffer, int size,
94 CodeObjectRequired create_code_object); 93 CodeObjectRequired create_code_object);
95 94
95 int jit_cookie() const { return jit_cookie_; }
96
96 // Prevent the use of the RootArray during the lifetime of this 97 // Prevent the use of the RootArray during the lifetime of this
97 // scope object. 98 // scope object.
98 class NoRootArrayScope BASE_EMBEDDED { 99 class NoRootArrayScope BASE_EMBEDDED {
99 public: 100 public:
100 explicit NoRootArrayScope(MacroAssembler* assembler) 101 explicit NoRootArrayScope(MacroAssembler* assembler)
101 : variable_(&assembler->root_array_available_), 102 : variable_(&assembler->root_array_available_),
102 old_value_(assembler->root_array_available_) { 103 old_value_(assembler->root_array_available_) {
103 assembler->root_array_available_ = false; 104 assembler->root_array_available_ = false;
104 } 105 }
105 ~NoRootArrayScope() { 106 ~NoRootArrayScope() {
106 *variable_ = old_value_; 107 *variable_ = old_value_;
107 } 108 }
108 private: 109 private:
109 bool* variable_; 110 bool* variable_;
110 bool old_value_; 111 bool old_value_;
111 }; 112 };
112 113
114 Isolate* isolate() const { return isolate_; }
115
113 // Operand pointing to an external reference. 116 // Operand pointing to an external reference.
114 // May emit code to set up the scratch register. The operand is 117 // May emit code to set up the scratch register. The operand is
115 // only guaranteed to be correct as long as the scratch register 118 // only guaranteed to be correct as long as the scratch register
116 // isn't changed. 119 // isn't changed.
117 // If the operand is used more than once, use a scratch register 120 // If the operand is used more than once, use a scratch register
118 // that is guaranteed not to be clobbered. 121 // that is guaranteed not to be clobbered.
119 Operand ExternalOperand(ExternalReference reference, 122 Operand ExternalOperand(ExternalReference reference,
120 Register scratch = kScratchRegister); 123 Register scratch = kScratchRegister);
121 // Loads and stores the value of an external reference. 124 // Loads and stores the value of an external reference.
122 // Special case code for load and store to take advantage of 125 // Special case code for load and store to take advantage of
(...skipping 1401 matching lines...) Expand 10 before | Expand all | Expand 10 after
1524 1527
1525 private: 1528 private:
1526 // Order general registers are pushed by Pushad. 1529 // Order general registers are pushed by Pushad.
1527 // rax, rcx, rdx, rbx, rsi, rdi, r8, r9, r11, r12, r14, r15. 1530 // rax, rcx, rdx, rbx, rsi, rdi, r8, r9, r11, r12, r14, r15.
1528 static const int kSafepointPushRegisterIndices[Register::kNumRegisters]; 1531 static const int kSafepointPushRegisterIndices[Register::kNumRegisters];
1529 static const int kNumSafepointSavedRegisters = 12; 1532 static const int kNumSafepointSavedRegisters = 12;
1530 static const int kSmiShift = kSmiTagSize + kSmiShiftSize; 1533 static const int kSmiShift = kSmiTagSize + kSmiShiftSize;
1531 1534
1532 bool generating_stub_; 1535 bool generating_stub_;
1533 bool has_frame_; 1536 bool has_frame_;
1537 Isolate* isolate_;
1534 bool root_array_available_; 1538 bool root_array_available_;
1539 int jit_cookie_;
1535 1540
1536 // Returns a register holding the smi value. The register MUST NOT be 1541 // Returns a register holding the smi value. The register MUST NOT be
1537 // modified. It may be the "smi 1 constant" register. 1542 // modified. It may be the "smi 1 constant" register.
1538 Register GetSmiConstant(Smi* value); 1543 Register GetSmiConstant(Smi* value);
1539 1544
1540 int64_t RootRegisterDelta(ExternalReference other); 1545 int64_t RootRegisterDelta(ExternalReference other);
1541 1546
1542 // Moves the smi value to the destination register. 1547 // Moves the smi value to the destination register.
1543 void LoadSmiConstant(Register dst, Smi* value); 1548 void LoadSmiConstant(Register dst, Smi* value);
1544 1549
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
1675 inline Operand StackOperandForReturnAddress(int32_t disp) { 1680 inline Operand StackOperandForReturnAddress(int32_t disp) {
1676 return Operand(rsp, disp); 1681 return Operand(rsp, disp);
1677 } 1682 }
1678 1683
1679 #define ACCESS_MASM(masm) masm-> 1684 #define ACCESS_MASM(masm) masm->
1680 1685
1681 } // namespace internal 1686 } // namespace internal
1682 } // namespace v8 1687 } // namespace v8
1683 1688
1684 #endif // V8_X64_MACRO_ASSEMBLER_X64_H_ 1689 #endif // V8_X64_MACRO_ASSEMBLER_X64_H_
OLDNEW
« no previous file with comments | « src/x64/codegen-x64.cc ('k') | src/x64/macro-assembler-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698