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

Unified Diff: src/ast.h

Issue 6805005: Fix opmitized external array access for compound assignments (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: remove unchanged file Created 9 years, 8 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/ast.h
diff --git a/src/ast.h b/src/ast.h
index e9a06ec5bf784b4f0054312003d5a0d0c5f9dd26..04195cdc926eceb88b9e46339f2e5a7e98854337 100644
--- a/src/ast.h
+++ b/src/ast.h
@@ -1,4 +1,4 @@
-// Copyright 2010 the V8 project authors. All rights reserved.
+// Copyright 2011 the V8 project authors. All rights reserved.
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
@@ -222,6 +222,11 @@ class Expression: public AstNode {
Expression() : bitfields_(0) {}
+ virtual int position() const {
+ UNREACHABLE();
+ return 0;
+ }
+
virtual Expression* AsExpression() { return this; }
virtual bool IsTrivial() { return false; }
@@ -318,6 +323,14 @@ class Expression: public AstNode {
bitfields_ |= NumBitOpsField::encode(num_bit_ops);
}
+ ExternalArrayType external_array_type() const {
+ return ExternalArrayTypeField::decode(bitfields_);
+ }
+ void set_external_array_type(ExternalArrayType array_type) {
+ bitfields_ &= ~ExternalArrayTypeField::mask();
+ bitfields_ |= ExternalArrayTypeField::encode(array_type);
+ }
+
private:
static const int kMaxNumBitOps = (1 << 5) - 1;
@@ -330,6 +343,7 @@ class Expression: public AstNode {
class ToInt32Field : public BitField<bool, 2, 1> {};
class NumBitOpsField : public BitField<int, 3, 5> {};
class LoopConditionField: public BitField<bool, 8, 1> {};
+ class ExternalArrayTypeField: public BitField<ExternalArrayType, 9, 4> {};
};
@@ -696,7 +710,7 @@ class CaseClause: public ZoneObject {
JumpTarget* body_target() { return &body_target_; }
ZoneList<Statement*>* statements() const { return statements_; }
- int position() { return position_; }
+ int position() const { return position_; }
Mads Ager (chromium) 2011/04/06 16:45:15 Repeat the virtual keyword all the way down for vi
void set_position(int pos) { position_ = pos; }
int EntryId() { return entry_id_; }
@@ -1255,11 +1269,6 @@ class Property: public Expression {
}
bool is_arguments_access() const { return is_arguments_access_; }
- ExternalArrayType GetExternalArrayType() const { return array_type_; }
- void SetExternalArrayType(ExternalArrayType array_type) {
- array_type_ = array_type;
- }
-
// Type feedback information.
void RecordTypeFeedback(TypeFeedbackOracle* oracle);
virtual bool IsMonomorphic() { return is_monomorphic_; }
@@ -1283,7 +1292,6 @@ class Property: public Expression {
bool is_function_prototype_ : 1;
bool is_arguments_access_ : 1;
Handle<Map> monomorphic_receiver_type_;
- ExternalArrayType array_type_;
};
@@ -1305,7 +1313,7 @@ class Call: public Expression {
Expression* expression() const { return expression_; }
ZoneList<Expression*>* arguments() const { return arguments_; }
- int position() { return pos_; }
+ int position() const { return pos_; }
void RecordTypeFeedback(TypeFeedbackOracle* oracle);
virtual ZoneMapList* GetReceiverTypes() { return receiver_types_; }
@@ -1383,7 +1391,7 @@ class CallNew: public Expression {
Expression* expression() const { return expression_; }
ZoneList<Expression*>* arguments() const { return arguments_; }
- int position() { return pos_; }
+ int position() const { return pos_; }
private:
Expression* expression_;
@@ -1527,14 +1535,22 @@ class CountOperation: public Expression {
virtual bool IsInlineable() const;
+ void RecordTypeFeedback(TypeFeedbackOracle* oracle);
+ virtual bool IsMonomorphic() { return is_monomorphic_; }
+ virtual Handle<Map> GetMonomorphicReceiverType() {
+ return monomorphic_receiver_type_;
+ }
+
// Bailout support.
int AssignmentId() const { return assignment_id_; }
private:
bool is_prefix_;
+ bool is_monomorphic_;
IncrementOperation* increment_;
int pos_;
int assignment_id_;
+ Handle<Map> monomorphic_receiver_type_;
};
@@ -1648,7 +1664,7 @@ class Assignment: public Expression {
Token::Value op() const { return op_; }
Expression* target() const { return target_; }
Expression* value() const { return value_; }
- int position() { return pos_; }
+ int position() const { return pos_; }
BinaryOperation* binary_operation() const { return binary_operation_; }
// This check relies on the definition order of token in token.h.
@@ -1670,10 +1686,6 @@ class Assignment: public Expression {
virtual Handle<Map> GetMonomorphicReceiverType() {
return monomorphic_receiver_type_;
}
- ExternalArrayType GetExternalArrayType() const { return array_type_; }
- void SetExternalArrayType(ExternalArrayType array_type) {
- array_type_ = array_type;
- }
// Bailout support.
int CompoundLoadId() const { return compound_load_id_; }
@@ -1694,7 +1706,6 @@ class Assignment: public Expression {
bool is_monomorphic_;
ZoneMapList* receiver_types_;
Handle<Map> monomorphic_receiver_type_;
- ExternalArrayType array_type_;
};

Powered by Google App Engine
This is Rietveld 408576698