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

Unified Diff: src/compiler/instruction.h

Issue 544953006: Reland "Add handling for argument adaptor frames to inlining." (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Reland fix: Add framestate to CollectStackTrace runtime call. Created 6 years, 3 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
« no previous file with comments | « src/compiler/common-operator.cc ('k') | src/compiler/instruction-selector.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/compiler/instruction.h
diff --git a/src/compiler/instruction.h b/src/compiler/instruction.h
index e2399b6e79f5df44855bb1f84d3e30d30d03a094..6d007841f42ad0b1dd010f6d03aa28adc9e62c4e 100644
--- a/src/compiler/instruction.h
+++ b/src/compiler/instruction.h
@@ -702,55 +702,84 @@ class Constant FINAL {
class FrameStateDescriptor : public ZoneObject {
public:
FrameStateDescriptor(const FrameStateCallInfo& state_info,
- int parameters_count, int locals_count, int stack_count,
+ size_t parameters_count, size_t locals_count,
+ size_t stack_count,
FrameStateDescriptor* outer_state = NULL)
- : bailout_id_(state_info.bailout_id()),
+ : type_(state_info.type()),
+ bailout_id_(state_info.bailout_id()),
frame_state_combine_(state_info.state_combine()),
parameters_count_(parameters_count),
locals_count_(locals_count),
stack_count_(stack_count),
- outer_state_(outer_state) {}
+ outer_state_(outer_state),
+ jsfunction_(state_info.jsfunction()) {}
+ FrameStateType type() const { return type_; }
BailoutId bailout_id() const { return bailout_id_; }
OutputFrameStateCombine state_combine() const { return frame_state_combine_; }
- int parameters_count() { return parameters_count_; }
- int locals_count() { return locals_count_; }
- int stack_count() { return stack_count_; }
- FrameStateDescriptor* outer_state() { return outer_state_; }
- void set_outer_state(FrameStateDescriptor* outer_state) {
- outer_state_ = outer_state;
- }
+ size_t parameters_count() const { return parameters_count_; }
+ size_t locals_count() const { return locals_count_; }
+ size_t stack_count() const { return stack_count_; }
+ FrameStateDescriptor* outer_state() const { return outer_state_; }
+ MaybeHandle<JSFunction> jsfunction() const { return jsfunction_; }
- int size() {
+ size_t size() const {
return parameters_count_ + locals_count_ + stack_count_ +
- 1; // Includes context.
+ (HasContext() ? 1 : 0);
}
- int total_size() {
- int total_size = 0;
- for (FrameStateDescriptor* iter = this; iter != NULL;
+ size_t GetTotalSize() const {
+ size_t total_size = 0;
+ for (const FrameStateDescriptor* iter = this; iter != NULL;
iter = iter->outer_state_) {
total_size += iter->size();
}
return total_size;
}
- int GetFrameCount() {
- int count = 0;
- for (FrameStateDescriptor* iter = this; iter != NULL;
+ size_t GetHeight(OutputFrameStateCombine override) const {
+ size_t height = size() - parameters_count();
+ switch (override) {
+ case kPushOutput:
+ ++height;
+ break;
+ case kIgnoreOutput:
+ break;
+ }
+ return height;
+ }
+
+ size_t GetFrameCount() const {
+ size_t count = 0;
+ for (const FrameStateDescriptor* iter = this; iter != NULL;
iter = iter->outer_state_) {
++count;
}
return count;
}
+ size_t GetJSFrameCount() const {
+ size_t count = 0;
+ for (const FrameStateDescriptor* iter = this; iter != NULL;
+ iter = iter->outer_state_) {
+ if (iter->type_ == JS_FRAME) {
+ ++count;
+ }
+ }
+ return count;
+ }
+
+ bool HasContext() const { return type_ == JS_FRAME; }
+
private:
+ FrameStateType type_;
BailoutId bailout_id_;
OutputFrameStateCombine frame_state_combine_;
- int parameters_count_;
- int locals_count_;
- int stack_count_;
+ size_t parameters_count_;
+ size_t locals_count_;
+ size_t stack_count_;
FrameStateDescriptor* outer_state_;
+ MaybeHandle<JSFunction> jsfunction_;
};
OStream& operator<<(OStream& os, const Constant& constant);
« no previous file with comments | « src/compiler/common-operator.cc ('k') | src/compiler/instruction-selector.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698