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

Side by Side Diff: src/arm64/instructions-arm64.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/arm64/code-stubs-arm64.h ('k') | src/arm64/instructions-arm64.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 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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_ARM64_INSTRUCTIONS_ARM64_H_ 5 #ifndef V8_ARM64_INSTRUCTIONS_ARM64_H_
6 #define V8_ARM64_INSTRUCTIONS_ARM64_H_ 6 #define V8_ARM64_INSTRUCTIONS_ARM64_H_
7 7
8 #include "src/arm64/constants-arm64.h" 8 #include "src/arm64/constants-arm64.h"
9 #include "src/arm64/utils-arm64.h" 9 #include "src/arm64/utils-arm64.h"
10 #include "src/assembler.h"
10 #include "src/globals.h" 11 #include "src/globals.h"
11 #include "src/utils.h" 12 #include "src/utils.h"
12 13
13 namespace v8 { 14 namespace v8 {
14 namespace internal { 15 namespace internal {
15 16
16
17 // ISA constants. -------------------------------------------------------------- 17 // ISA constants. --------------------------------------------------------------
18 18
19 typedef uint32_t Instr; 19 typedef uint32_t Instr;
20 20
21 // The following macros initialize a float/double variable with a bit pattern 21 // The following macros initialize a float/double variable with a bit pattern
22 // without using static initializers: If ARM64_DEFINE_FP_STATICS is defined, the 22 // without using static initializers: If ARM64_DEFINE_FP_STATICS is defined, the
23 // symbol is defined as uint32_t/uint64_t initialized with the desired bit 23 // symbol is defined as uint32_t/uint64_t initialized with the desired bit
24 // pattern. Otherwise, the same symbol is declared as an external float/double. 24 // pattern. Otherwise, the same symbol is declared as an external float/double.
25 #if defined(ARM64_DEFINE_FP_STATICS) 25 #if defined(ARM64_DEFINE_FP_STATICS)
26 #define DEFINE_FLOAT(name, value) extern const uint32_t name = value 26 #define DEFINE_FLOAT(name, value) extern const uint32_t name = value
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after
366 int64_t ImmPCOffset(); 366 int64_t ImmPCOffset();
367 367
368 // Find the target of this instruction. 'this' may be a branch or a 368 // Find the target of this instruction. 'this' may be a branch or a
369 // PC-relative addressing instruction. 369 // PC-relative addressing instruction.
370 Instruction* ImmPCOffsetTarget(); 370 Instruction* ImmPCOffsetTarget();
371 371
372 static bool IsValidImmPCOffset(ImmBranchType branch_type, ptrdiff_t offset); 372 static bool IsValidImmPCOffset(ImmBranchType branch_type, ptrdiff_t offset);
373 bool IsTargetInImmPCOffsetRange(Instruction* target); 373 bool IsTargetInImmPCOffsetRange(Instruction* target);
374 // Patch a PC-relative offset to refer to 'target'. 'this' may be a branch or 374 // Patch a PC-relative offset to refer to 'target'. 'this' may be a branch or
375 // a PC-relative addressing instruction. 375 // a PC-relative addressing instruction.
376 void SetImmPCOffsetTarget(Isolate* isolate, Instruction* target); 376 void SetImmPCOffsetTarget(AssemblerBase::IsolateData isolate_data,
377 void SetUnresolvedInternalReferenceImmTarget(Isolate* isolate, 377 Instruction* target);
378 void SetUnresolvedInternalReferenceImmTarget(AssemblerBase::IsolateData,
378 Instruction* target); 379 Instruction* target);
379 // Patch a literal load instruction to load from 'source'. 380 // Patch a literal load instruction to load from 'source'.
380 void SetImmLLiteral(Instruction* source); 381 void SetImmLLiteral(Instruction* source);
381 382
382 uintptr_t LiteralAddress() { 383 uintptr_t LiteralAddress() {
383 int offset = ImmLLiteral() << kLoadLiteralScaleLog2; 384 int offset = ImmLLiteral() << kLoadLiteralScaleLog2;
384 return reinterpret_cast<uintptr_t>(this) + offset; 385 return reinterpret_cast<uintptr_t>(this) + offset;
385 } 386 }
386 387
387 enum CheckAlignment { NO_CHECK, CHECK_ALIGNMENT }; 388 enum CheckAlignment { NO_CHECK, CHECK_ALIGNMENT };
(...skipping 16 matching lines...) Expand all
404 return reinterpret_cast<Instruction*>(src); 405 return reinterpret_cast<Instruction*>(src);
405 } 406 }
406 407
407 V8_INLINE ptrdiff_t DistanceTo(Instruction* target) { 408 V8_INLINE ptrdiff_t DistanceTo(Instruction* target) {
408 return reinterpret_cast<Address>(target) - reinterpret_cast<Address>(this); 409 return reinterpret_cast<Address>(target) - reinterpret_cast<Address>(this);
409 } 410 }
410 411
411 412
412 static const int ImmPCRelRangeBitwidth = 21; 413 static const int ImmPCRelRangeBitwidth = 21;
413 static bool IsValidPCRelOffset(ptrdiff_t offset) { return is_int21(offset); } 414 static bool IsValidPCRelOffset(ptrdiff_t offset) { return is_int21(offset); }
414 void SetPCRelImmTarget(Isolate* isolate, Instruction* target); 415 void SetPCRelImmTarget(AssemblerBase::IsolateData isolate_data,
416 Instruction* target);
415 void SetBranchImmTarget(Instruction* target); 417 void SetBranchImmTarget(Instruction* target);
416 }; 418 };
417 419
418 420
419 // Where Instruction looks at instructions generated by the Assembler, 421 // Where Instruction looks at instructions generated by the Assembler,
420 // InstructionSequence looks at instructions sequences generated by the 422 // InstructionSequence looks at instructions sequences generated by the
421 // MacroAssembler. 423 // MacroAssembler.
422 class InstructionSequence : public Instruction { 424 class InstructionSequence : public Instruction {
423 public: 425 public:
424 static InstructionSequence* At(Address address) { 426 static InstructionSequence* At(Address address) {
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
531 TRACE_DISABLE = 2 << 6, 533 TRACE_DISABLE = 2 << 6,
532 TRACE_OVERRIDE = 3 << 6 534 TRACE_OVERRIDE = 3 << 6
533 }; 535 };
534 536
535 537
536 } // namespace internal 538 } // namespace internal
537 } // namespace v8 539 } // namespace v8
538 540
539 541
540 #endif // V8_ARM64_INSTRUCTIONS_ARM64_H_ 542 #endif // V8_ARM64_INSTRUCTIONS_ARM64_H_
OLDNEW
« no previous file with comments | « src/arm64/code-stubs-arm64.h ('k') | src/arm64/instructions-arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698