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

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

Issue 264823004: MIPS: Fix for 3303 MultithreadedParallelIsolates has a race condition. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 7 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
« no previous file with comments | « src/mips/deoptimizer-mips.cc ('k') | src/mips/macro-assembler-mips.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_MIPS_MACRO_ASSEMBLER_MIPS_H_ 5 #ifndef V8_MIPS_MACRO_ASSEMBLER_MIPS_H_
6 #define V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ 6 #define V8_MIPS_MACRO_ASSEMBLER_MIPS_H_
7 7
8 #include "assembler.h" 8 #include "assembler.h"
9 #include "mips/assembler-mips.h" 9 #include "mips/assembler-mips.h"
10 #include "v8globals.h" 10 #include "v8globals.h"
(...skipping 1596 matching lines...) Expand 10 before | Expand all | Expand 10 after
1607 }; 1607 };
1608 1608
1609 1609
1610 // The code patcher is used to patch (typically) small parts of code e.g. for 1610 // The code patcher is used to patch (typically) small parts of code e.g. for
1611 // debugging and other types of instrumentation. When using the code patcher 1611 // debugging and other types of instrumentation. When using the code patcher
1612 // the exact number of bytes specified must be emitted. It is not legal to emit 1612 // the exact number of bytes specified must be emitted. It is not legal to emit
1613 // relocation information. If any of these constraints are violated it causes 1613 // relocation information. If any of these constraints are violated it causes
1614 // an assertion to fail. 1614 // an assertion to fail.
1615 class CodePatcher { 1615 class CodePatcher {
1616 public: 1616 public:
1617 CodePatcher(byte* address, int instructions); 1617 enum FlushICache {
1618 FLUSH,
1619 DONT_FLUSH
1620 };
1621
1622 CodePatcher(byte* address,
1623 int instructions,
1624 FlushICache flush_cache = FLUSH);
1618 virtual ~CodePatcher(); 1625 virtual ~CodePatcher();
1619 1626
1620 // Macro assembler to emit code. 1627 // Macro assembler to emit code.
1621 MacroAssembler* masm() { return &masm_; } 1628 MacroAssembler* masm() { return &masm_; }
1622 1629
1623 // Emit an instruction directly. 1630 // Emit an instruction directly.
1624 void Emit(Instr instr); 1631 void Emit(Instr instr);
1625 1632
1626 // Emit an address directly. 1633 // Emit an address directly.
1627 void Emit(Address addr); 1634 void Emit(Address addr);
1628 1635
1629 // Change the condition part of an instruction leaving the rest of the current 1636 // Change the condition part of an instruction leaving the rest of the current
1630 // instruction unchanged. 1637 // instruction unchanged.
1631 void ChangeBranchCondition(Condition cond); 1638 void ChangeBranchCondition(Condition cond);
1632 1639
1633 private: 1640 private:
1634 byte* address_; // The address of the code being patched. 1641 byte* address_; // The address of the code being patched.
1635 int size_; // Number of bytes of the expected patch size. 1642 int size_; // Number of bytes of the expected patch size.
1636 MacroAssembler masm_; // Macro assembler used to generate the code. 1643 MacroAssembler masm_; // Macro assembler used to generate the code.
1644 FlushICache flush_cache_; // Whether to flush the I cache after patching.
1637 }; 1645 };
1638 1646
1639 1647
1640 1648
1641 #ifdef GENERATED_CODE_COVERAGE 1649 #ifdef GENERATED_CODE_COVERAGE
1642 #define CODE_COVERAGE_STRINGIFY(x) #x 1650 #define CODE_COVERAGE_STRINGIFY(x) #x
1643 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) 1651 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x)
1644 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) 1652 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__)
1645 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> 1653 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm->
1646 #else 1654 #else
1647 #define ACCESS_MASM(masm) masm-> 1655 #define ACCESS_MASM(masm) masm->
1648 #endif 1656 #endif
1649 1657
1650 } } // namespace v8::internal 1658 } } // namespace v8::internal
1651 1659
1652 #endif // V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ 1660 #endif // V8_MIPS_MACRO_ASSEMBLER_MIPS_H_
OLDNEW
« no previous file with comments | « src/mips/deoptimizer-mips.cc ('k') | src/mips/macro-assembler-mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698