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

Side by Side Diff: src/objects.h

Issue 1997363002: Adds support for collecting statistics about code and its metadata. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Addressed comments from Hannes. Created 4 years, 6 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/log.cc ('k') | src/objects.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 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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_OBJECTS_H_ 5 #ifndef V8_OBJECTS_H_
6 #define V8_OBJECTS_H_ 6 #define V8_OBJECTS_H_
7 7
8 #include <iosfwd> 8 #include <iosfwd>
9 9
10 #include "src/assert-scope.h" 10 #include "src/assert-scope.h"
(...skipping 4430 matching lines...) Expand 10 before | Expand all | Expand 10 after
4441 // offset and source position. 4441 // offset and source position.
4442 DECL_ACCESSORS(source_position_table, ByteArray) 4442 DECL_ACCESSORS(source_position_table, ByteArray)
4443 4443
4444 DECLARE_CAST(BytecodeArray) 4444 DECLARE_CAST(BytecodeArray)
4445 4445
4446 // Dispatched behavior. 4446 // Dispatched behavior.
4447 inline int BytecodeArraySize(); 4447 inline int BytecodeArraySize();
4448 4448
4449 inline int instruction_size(); 4449 inline int instruction_size();
4450 4450
4451 // Returns the size of bytecode and its metadata. This includes the size of
4452 // bytecode, constant pool, source position table, and handler table.
4453 inline int SizeIncludingMetadata();
4454
4451 int SourcePosition(int offset); 4455 int SourcePosition(int offset);
4452 int SourceStatementPosition(int offset); 4456 int SourceStatementPosition(int offset);
4453 4457
4454 DECLARE_PRINTER(BytecodeArray) 4458 DECLARE_PRINTER(BytecodeArray)
4455 DECLARE_VERIFIER(BytecodeArray) 4459 DECLARE_VERIFIER(BytecodeArray)
4456 4460
4457 void Disassemble(std::ostream& os); 4461 void Disassemble(std::ostream& os);
4458 4462
4459 void CopyBytecodesTo(BytecodeArray* to); 4463 void CopyBytecodesTo(BytecodeArray* to);
4460 4464
(...skipping 657 matching lines...) Expand 10 before | Expand all | Expand 10 after
5118 5122
5119 // Returns the address of the first instruction. 5123 // Returns the address of the first instruction.
5120 inline byte* instruction_start(); 5124 inline byte* instruction_start();
5121 5125
5122 // Returns the address right after the last instruction. 5126 // Returns the address right after the last instruction.
5123 inline byte* instruction_end(); 5127 inline byte* instruction_end();
5124 5128
5125 // Returns the size of the instructions, padding, and relocation information. 5129 // Returns the size of the instructions, padding, and relocation information.
5126 inline int body_size(); 5130 inline int body_size();
5127 5131
5132 // Returns the size of code and its metadata. This includes the size of code
5133 // relocation information, deoptimization data and handler table.
5134 inline int SizeIncludingMetadata();
5135
5128 // Returns the address of the first relocation info (read backwards!). 5136 // Returns the address of the first relocation info (read backwards!).
5129 inline byte* relocation_start(); 5137 inline byte* relocation_start();
5130 5138
5131 // Code entry point. 5139 // Code entry point.
5132 inline byte* entry(); 5140 inline byte* entry();
5133 5141
5134 // Returns true if pc is inside this object's instructions. 5142 // Returns true if pc is inside this object's instructions.
5135 inline bool contains(byte* pc); 5143 inline bool contains(byte* pc);
5136 5144
5137 // Relocate the code by delta bytes. Called to signal that this code 5145 // Relocate the code by delta bytes. Called to signal that this code
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
5349 }; 5357 };
5350 5358
5351 class AbstractCode : public HeapObject { 5359 class AbstractCode : public HeapObject {
5352 public: 5360 public:
5353 // All code kinds and INTERPRETED_FUNCTION. 5361 // All code kinds and INTERPRETED_FUNCTION.
5354 enum Kind { 5362 enum Kind {
5355 #define DEFINE_CODE_KIND_ENUM(name) name, 5363 #define DEFINE_CODE_KIND_ENUM(name) name,
5356 CODE_KIND_LIST(DEFINE_CODE_KIND_ENUM) 5364 CODE_KIND_LIST(DEFINE_CODE_KIND_ENUM)
5357 #undef DEFINE_CODE_KIND_ENUM 5365 #undef DEFINE_CODE_KIND_ENUM
5358 INTERPRETED_FUNCTION, 5366 INTERPRETED_FUNCTION,
5367 NUMBER_OF_KINDS
5359 }; 5368 };
5360 5369
5370 static const char* Kind2String(Kind kind);
5371
5361 int SourcePosition(int offset); 5372 int SourcePosition(int offset);
5362 int SourceStatementPosition(int offset); 5373 int SourceStatementPosition(int offset);
5363 5374
5364 // Returns the address of the first instruction. 5375 // Returns the address of the first instruction.
5365 inline Address instruction_start(); 5376 inline Address instruction_start();
5366 5377
5367 // Returns the address right after the last instruction. 5378 // Returns the address right after the last instruction.
5368 inline Address instruction_end(); 5379 inline Address instruction_end();
5369 5380
5370 // Returns the of the code instructions. 5381 // Returns the size of the code instructions.
5371 inline int instruction_size(); 5382 inline int instruction_size();
5372 5383
5384 // Returns the size of instructions and the metadata.
5385 inline int SizeIncludingMetadata();
5386
5373 // Returns true if pc is inside this object's instructions. 5387 // Returns true if pc is inside this object's instructions.
5374 inline bool contains(byte* pc); 5388 inline bool contains(byte* pc);
5375 5389
5376 // Returns the AbstractCode::Kind of the code. 5390 // Returns the AbstractCode::Kind of the code.
5377 inline Kind kind(); 5391 inline Kind kind();
5378 5392
5379 // Calculate the size of the code object to report for log events. This takes 5393 // Calculate the size of the code object to report for log events. This takes
5380 // the layout of the code object into account. 5394 // the layout of the code object into account.
5381 inline int ExecutableSize(); 5395 inline int ExecutableSize();
5382 5396
(...skipping 5366 matching lines...) Expand 10 before | Expand all | Expand 10 after
10749 } 10763 }
10750 return value; 10764 return value;
10751 } 10765 }
10752 }; 10766 };
10753 10767
10754 10768
10755 } // NOLINT, false-positive due to second-order macros. 10769 } // NOLINT, false-positive due to second-order macros.
10756 } // NOLINT, false-positive due to second-order macros. 10770 } // NOLINT, false-positive due to second-order macros.
10757 10771
10758 #endif // V8_OBJECTS_H_ 10772 #endif // V8_OBJECTS_H_
OLDNEW
« no previous file with comments | « src/log.cc ('k') | src/objects.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698