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

Side by Side Diff: src/objects.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 unified diff | Download patch
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 #include <iomanip> 5 #include <iomanip>
6 #include <sstream> 6 #include <sstream>
7 7
8 #include "src/v8.h" 8 #include "src/v8.h"
9 9
10 #include "src/accessors.h" 10 #include "src/accessors.h"
(...skipping 11602 matching lines...) Expand 10 before | Expand all | Expand 10 after
11613 if ((name != NULL) && (name[0] != '\0')) { 11613 if ((name != NULL) && (name[0] != '\0')) {
11614 os << "name = " << name << "\n"; 11614 os << "name = " << name << "\n";
11615 } 11615 }
11616 if (kind() == OPTIMIZED_FUNCTION) { 11616 if (kind() == OPTIMIZED_FUNCTION) {
11617 os << "stack_slots = " << stack_slots() << "\n"; 11617 os << "stack_slots = " << stack_slots() << "\n";
11618 } 11618 }
11619 11619
11620 os << "Instructions (size = " << instruction_size() << ")\n"; 11620 os << "Instructions (size = " << instruction_size() << ")\n";
11621 { 11621 {
11622 Isolate* isolate = GetIsolate(); 11622 Isolate* isolate = GetIsolate();
11623 int decode_size = is_crankshafted() 11623 int size = instruction_size();
11624 ? static_cast<int>(safepoint_table_offset()) 11624 int safepoint_offset =
11625 : instruction_size(); 11625 is_crankshafted() ? static_cast<int>(safepoint_table_offset()) : size;
11626 // If there might be a back edge table, stop before reaching it. 11626 int back_edge_offset = (kind() == Code::FUNCTION)
11627 if (kind() == Code::FUNCTION) { 11627 ? static_cast<int>(back_edge_table_offset())
11628 decode_size = 11628 : size;
11629 Min(decode_size, static_cast<int>(back_edge_table_offset())); 11629 int constant_offset =
11630 FLAG_enable_embedded_constant_pool ? constant_pool_offset() : size;
11631
11632 // Stop before reaching any embedded tables
11633 int code_size = Min(safepoint_offset, back_edge_offset);
11634 byte* begin = instruction_start();
11635 byte* end = begin + Min(code_size, constant_offset);
11636 Disassembler::Decode(isolate, &os, begin, end, this);
11637
11638 if (constant_offset < code_size) {
11639 int constant_size = code_size - constant_offset;
11640 DCHECK((constant_size & kPointerAlignmentMask) == 0);
11641 os << "\nConstant Pool (size = " << constant_size << ")\n";
11642 Vector<char> buf = Vector<char>::New(50);
11643 intptr_t* ptr = reinterpret_cast<intptr_t*>(begin + constant_offset);
11644 for (int i = 0; i < constant_size; i += kPointerSize, ptr++) {
11645 SNPrintF(buf, "%4d %08" V8PRIxPTR, i, *ptr);
11646 os << static_cast<const void*>(ptr) << " " << buf.start() << "\n";
11647 }
11630 } 11648 }
11631 byte* begin = instruction_start();
11632 byte* end = begin + decode_size;
11633 Disassembler::Decode(isolate, &os, begin, end, this);
11634 } 11649 }
11635 os << "\n"; 11650 os << "\n";
11636 11651
11637 if (kind() == FUNCTION) { 11652 if (kind() == FUNCTION) {
11638 DeoptimizationOutputData* data = 11653 DeoptimizationOutputData* data =
11639 DeoptimizationOutputData::cast(this->deoptimization_data()); 11654 DeoptimizationOutputData::cast(this->deoptimization_data());
11640 data->DeoptimizationOutputDataPrint(os); 11655 data->DeoptimizationOutputDataPrint(os);
11641 } else if (kind() == OPTIMIZED_FUNCTION) { 11656 } else if (kind() == OPTIMIZED_FUNCTION) {
11642 DeoptimizationInputData* data = 11657 DeoptimizationInputData* data =
11643 DeoptimizationInputData::cast(this->deoptimization_data()); 11658 DeoptimizationInputData::cast(this->deoptimization_data());
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
11705 } 11720 }
11706 11721
11707 os << "RelocInfo (size = " << relocation_size() << ")\n"; 11722 os << "RelocInfo (size = " << relocation_size() << ")\n";
11708 for (RelocIterator it(this); !it.done(); it.next()) { 11723 for (RelocIterator it(this); !it.done(); it.next()) {
11709 it.rinfo()->Print(GetIsolate(), os); 11724 it.rinfo()->Print(GetIsolate(), os);
11710 } 11725 }
11711 os << "\n"; 11726 os << "\n";
11712 11727
11713 #ifdef OBJECT_PRINT 11728 #ifdef OBJECT_PRINT
11714 if (FLAG_enable_ool_constant_pool) { 11729 if (FLAG_enable_ool_constant_pool) {
11715 ConstantPoolArray* pool = constant_pool(); 11730 ConstantPoolArray* pool =
11731 reinterpret_cast<ConstantPoolArray*>(constant_pool());
11716 if (pool->length()) { 11732 if (pool->length()) {
11717 os << "Constant Pool\n"; 11733 os << "Constant Pool\n";
11718 pool->Print(os); 11734 pool->Print(os);
11719 os << "\n"; 11735 os << "\n";
11720 } 11736 }
11721 } 11737 }
11722 #endif 11738 #endif
11723 } 11739 }
11724 #endif // ENABLE_DISASSEMBLER 11740 #endif // ENABLE_DISASSEMBLER
11725 11741
(...skipping 5443 matching lines...) Expand 10 before | Expand all | Expand 10 after
17169 CompilationInfo* info) { 17185 CompilationInfo* info) {
17170 Handle<DependentCode> codes = DependentCode::InsertCompilationInfo( 17186 Handle<DependentCode> codes = DependentCode::InsertCompilationInfo(
17171 handle(cell->dependent_code(), info->isolate()), 17187 handle(cell->dependent_code(), info->isolate()),
17172 DependentCode::kPropertyCellChangedGroup, info->object_wrapper()); 17188 DependentCode::kPropertyCellChangedGroup, info->object_wrapper());
17173 if (*codes != cell->dependent_code()) cell->set_dependent_code(*codes); 17189 if (*codes != cell->dependent_code()) cell->set_dependent_code(*codes);
17174 info->dependencies(DependentCode::kPropertyCellChangedGroup)->Add( 17190 info->dependencies(DependentCode::kPropertyCellChangedGroup)->Add(
17175 cell, info->zone()); 17191 cell, info->zone());
17176 } 17192 }
17177 17193
17178 } } // namespace v8::internal 17194 } } // namespace v8::internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698