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

Unified Diff: src/heap/heap.cc

Issue 1030353003: Enable constant pool support. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 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 side-by-side diff with in-line comments
Download patch
Index: src/heap/heap.cc
diff --git a/src/heap/heap.cc b/src/heap/heap.cc
index 2ac5146c46d0cf06c6f00f2bbea878a0015db66b..25e4acd0e4f5f4b5bb4698f55e29d8160390f2ff 100644
--- a/src/heap/heap.cc
+++ b/src/heap/heap.cc
@@ -3708,14 +3708,17 @@ AllocationResult Heap::AllocateCode(int object_size, bool immovable) {
AllocationResult Heap::CopyCode(Code* code) {
AllocationResult allocation;
HeapObject* new_constant_pool;
- if (FLAG_enable_ool_constant_pool &&
- code->constant_pool() != empty_constant_pool_array()) {
- // Copy the constant pool, since edits to the copied code may modify
- // the constant pool.
- allocation = CopyConstantPoolArray(code->constant_pool());
- if (!allocation.To(&new_constant_pool)) return allocation;
- } else {
- new_constant_pool = empty_constant_pool_array();
+ if (FLAG_enable_ool_constant_pool) {
+ ConstantPoolArray* constant_pool =
+ reinterpret_cast<ConstantPoolArray*>(code->constant_pool());
+ if (constant_pool != empty_constant_pool_array()) {
+ // Copy the constant pool, since edits to the copied code may modify
+ // the constant pool.
+ allocation = CopyConstantPoolArray(constant_pool);
+ if (!allocation.To(&new_constant_pool)) return allocation;
+ } else {
+ new_constant_pool = empty_constant_pool_array();
+ }
}
HeapObject* result;
@@ -3730,8 +3733,10 @@ AllocationResult Heap::CopyCode(Code* code) {
CopyBlock(new_addr, old_addr, obj_size);
Code* new_code = Code::cast(result);
- // Update the constant pool.
- new_code->set_constant_pool(new_constant_pool);
+ if (FLAG_enable_ool_constant_pool) {
+ // Update the constant pool.
+ new_code->set_constant_pool(new_constant_pool);
+ }
// Relocate the copy.
DCHECK(isolate_->code_range() == NULL || !isolate_->code_range()->valid() ||
@@ -3751,14 +3756,17 @@ AllocationResult Heap::CopyCode(Code* code, Vector<byte> reloc_info) {
if (!allocation.To(&reloc_info_array)) return allocation;
}
HeapObject* new_constant_pool;
- if (FLAG_enable_ool_constant_pool &&
- code->constant_pool() != empty_constant_pool_array()) {
- // Copy the constant pool, since edits to the copied code may modify
- // the constant pool.
- AllocationResult allocation = CopyConstantPoolArray(code->constant_pool());
- if (!allocation.To(&new_constant_pool)) return allocation;
- } else {
- new_constant_pool = empty_constant_pool_array();
+ if (FLAG_enable_ool_constant_pool) {
+ ConstantPoolArray* constant_pool =
+ reinterpret_cast<ConstantPoolArray*>(code->constant_pool());
+ if (constant_pool != empty_constant_pool_array()) {
+ // Copy the constant pool, since edits to the copied code may modify
+ // the constant pool.
+ AllocationResult allocation = CopyConstantPoolArray(constant_pool);
+ if (!allocation.To(&new_constant_pool)) return allocation;
+ } else {
+ new_constant_pool = empty_constant_pool_array();
+ }
}
int new_body_size = RoundUp(code->instruction_size(), kObjectAlignment);
@@ -3784,8 +3792,10 @@ AllocationResult Heap::CopyCode(Code* code, Vector<byte> reloc_info) {
Code* new_code = Code::cast(result);
new_code->set_relocation_info(reloc_info_array);
- // Update constant pool.
- new_code->set_constant_pool(new_constant_pool);
+ if (FLAG_enable_ool_constant_pool) {
+ // Update constant pool.
+ new_code->set_constant_pool(new_constant_pool);
+ }
// Copy patched rinfo.
CopyBytes(new_code->relocation_start(), reloc_info.start(),

Powered by Google App Engine
This is Rietveld 408576698