|
Landing: Write protect executable pages in the VM.
Change executable pages to be read/execute but not writable by default.
All pages are made temporarily writable just before a full GC, because both
the mark and sweep phases write to the pages. When allocating in a page and
when patching code, the pages are made temporarily writable.
The order of allocation of Code and Instructions objects is changed so that
a GC will not occur after Instructions is allocated. (A full GC would
render the Instructions unwritable.) A scoped object is used to make memory
protection simpler.
Original CL: https://codereview.chromium.org/106593002/
I added a cc test that is expected to crash.
Total comments: 4
Total comments: 5
Total comments: 21
|
Unified diffs |
Side-by-side diffs |
Delta from patch set |
Stats (+557 lines, -170 lines) |
Patch |
|
M |
runtime/tests/vm/vm.status
|
View
|
1
2
3
4
5
6
7
8
9
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
runtime/vm/assembler.h
|
View
|
1
2
3
4
5
6
7
8
9
|
2 chunks |
+6 lines, -0 lines |
0 comments
|
Download
|
|
M |
runtime/vm/assembler.cc
|
View
|
1
2
3
4
5
6
7
8
9
|
1 chunk |
+13 lines, -0 lines |
0 comments
|
Download
|
|
M |
runtime/vm/assembler_arm.h
|
View
|
1
2
3
4
5
6
7
8
9
|
1 chunk |
+5 lines, -0 lines |
0 comments
|
Download
|
|
M |
runtime/vm/assembler_arm.cc
|
View
|
1
2
3
4
5
6
7
8
9
|
1 chunk |
+2 lines, -0 lines |
0 comments
|
Download
|
|
M |
runtime/vm/assembler_ia32.h
|
View
|
1
2
3
4
5
6
7
8
9
|
1 chunk |
+6 lines, -0 lines |
0 comments
|
Download
|
|
M |
runtime/vm/assembler_ia32.cc
|
View
|
1
2
3
4
5
6
7
8
9
|
1 chunk |
+2 lines, -0 lines |
0 comments
|
Download
|
|
M |
runtime/vm/assembler_mips.h
|
View
|
1
2
3
4
5
6
7
8
9
|
1 chunk |
+7 lines, -0 lines |
0 comments
|
Download
|
|
M |
runtime/vm/assembler_mips.cc
|
View
|
1
2
3
4
5
6
7
8
9
|
1 chunk |
+2 lines, -0 lines |
0 comments
|
Download
|
|
M |
runtime/vm/assembler_x64.h
|
View
|
1
2
3
4
5
6
7
8
9
|
1 chunk |
+7 lines, -0 lines |
0 comments
|
Download
|
|
M |
runtime/vm/code_generator.cc
|
View
|
1
2
3
4
5
6
7
8
9
|
3 chunks |
+21 lines, -7 lines |
0 comments
|
Download
|
|
M |
runtime/vm/code_patcher.h
|
View
|
1
2
3
4
5
6
7
8
9
|
1 chunk |
+16 lines, -0 lines |
0 comments
|
Download
|
|
M |
runtime/vm/code_patcher.cc
|
View
|
1
2
3
4
5
6
7
8
9
|
3 chunks |
+47 lines, -9 lines |
0 comments
|
Download
|
|
M |
runtime/vm/dart.cc
|
View
|
1
2
3
4
5
6
7
8
9
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
runtime/vm/debugger_arm.cc
|
View
|
1
2
3
4
5
6
7
8
9
|
2 chunks |
+32 lines, -24 lines |
0 comments
|
Download
|
|
M |
runtime/vm/debugger_ia32.cc
|
View
|
1
2
3
4
5
6
7
8
9
|
2 chunks |
+32 lines, -24 lines |
0 comments
|
Download
|
|
M |
runtime/vm/debugger_mips.cc
|
View
|
1
2
3
4
5
6
7
8
9
|
2 chunks |
+32 lines, -24 lines |
0 comments
|
Download
|
|
M |
runtime/vm/debugger_x64.cc
|
View
|
1
2
3
4
5
6
7
8
9
|
2 chunks |
+36 lines, -26 lines |
0 comments
|
Download
|
|
M |
runtime/vm/freelist.h
|
View
|
1
2
3
4
5
6
7
8
9
|
3 chunks |
+10 lines, -2 lines |
0 comments
|
Download
|
|
M |
runtime/vm/freelist.cc
|
View
|
1
2
3
4
5
6
7
8
9
|
7 chunks |
+102 lines, -8 lines |
0 comments
|
Download
|
|
M |
runtime/vm/freelist_test.cc
|
View
|
1
2
3
4
5
6
7
8
9
|
1 chunk |
+10 lines, -9 lines |
0 comments
|
Download
|
|
M |
runtime/vm/instructions_arm_test.cc
|
View
|
1
2
3
4
5
6
7
8
9
|
1 chunk |
+7 lines, -0 lines |
0 comments
|
Download
|
|
M |
runtime/vm/instructions_ia32_test.cc
|
View
|
1
2
3
4
5
6
7
8
9
|
2 chunks |
+9 lines, -0 lines |
0 comments
|
Download
|
|
M |
runtime/vm/instructions_mips_test.cc
|
View
|
1
2
3
4
5
6
7
8
9
|
1 chunk |
+7 lines, -0 lines |
0 comments
|
Download
|
|
M |
runtime/vm/instructions_x64_test.cc
|
View
|
1
2
3
4
5
6
7
8
9
|
1 chunk |
+7 lines, -0 lines |
0 comments
|
Download
|
|
M |
runtime/vm/object.cc
|
View
|
1
2
3
4
5
6
7
8
9
|
5 chunks |
+16 lines, -8 lines |
0 comments
|
Download
|
|
M |
runtime/vm/object_test.cc
|
View
|
1
2
3
4
5
6
7
8
9
|
1 chunk |
+25 lines, -0 lines |
0 comments
|
Download
|
|
M |
runtime/vm/pages.cc
|
View
|
1
2
3
4
5
6
7
8
9
|
6 chunks |
+51 lines, -7 lines |
0 comments
|
Download
|
|
M |
runtime/vm/virtual_memory.h
|
View
|
1
2
3
4
5
6
7
8
9
|
3 chunks |
+7 lines, -2 lines |
0 comments
|
Download
|
|
M |
runtime/vm/virtual_memory.cc
|
View
|
1
2
3
4
5
6
7
8
9
|
1 chunk |
+6 lines, -0 lines |
0 comments
|
Download
|
|
M |
runtime/vm/virtual_memory_android.cc
|
View
|
1
2
3
4
5
6
7
8
9
|
2 chunks |
+7 lines, -5 lines |
0 comments
|
Download
|
|
M |
runtime/vm/virtual_memory_linux.cc
|
View
|
1
2
3
4
5
6
7
8
9
|
2 chunks |
+8 lines, -5 lines |
0 comments
|
Download
|
|
M |
runtime/vm/virtual_memory_macos.cc
|
View
|
1
2
3
4
5
6
7
8
9
|
2 chunks |
+7 lines, -5 lines |
0 comments
|
Download
|
|
M |
runtime/vm/virtual_memory_win.cc
|
View
|
1
2
3
4
5
6
7
8
9
10
|
3 chunks |
+10 lines, -5 lines |
0 comments
|
Download
|
Total messages: 9 (0 generated)
|