| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 "src/ast/ast.h" | 5 #include "src/ast/ast.h" |
| 6 | 6 |
| 7 #include <cmath> // For isfinite. | 7 #include <cmath> // For isfinite. |
| 8 | 8 |
| 9 #include "src/ast/compile-time-value.h" | 9 #include "src/ast/compile-time-value.h" |
| 10 #include "src/ast/prettyprinter.h" | 10 #include "src/ast/prettyprinter.h" |
| (...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 246 LanguageMode language_mode, | 246 LanguageMode language_mode, |
| 247 FeedbackSlot* out_slot) { | 247 FeedbackSlot* out_slot) { |
| 248 Property* property = expr->AsProperty(); | 248 Property* property = expr->AsProperty(); |
| 249 LhsKind assign_type = Property::GetAssignType(property); | 249 LhsKind assign_type = Property::GetAssignType(property); |
| 250 if ((assign_type == VARIABLE && | 250 if ((assign_type == VARIABLE && |
| 251 expr->AsVariableProxy()->var()->IsUnallocated()) || | 251 expr->AsVariableProxy()->var()->IsUnallocated()) || |
| 252 assign_type == NAMED_PROPERTY || assign_type == KEYED_PROPERTY) { | 252 assign_type == NAMED_PROPERTY || assign_type == KEYED_PROPERTY) { |
| 253 // TODO(ishell): consider using ICSlotCache for variables here. | 253 // TODO(ishell): consider using ICSlotCache for variables here. |
| 254 if (assign_type == KEYED_PROPERTY) { | 254 if (assign_type == KEYED_PROPERTY) { |
| 255 *out_slot = spec->AddKeyedStoreICSlot(language_mode); | 255 *out_slot = spec->AddKeyedStoreICSlot(language_mode); |
| 256 | |
| 257 } else { | 256 } else { |
| 258 *out_slot = spec->AddStoreICSlot(language_mode); | 257 *out_slot = spec->AddStoreICSlot(language_mode); |
| 259 } | 258 } |
| 260 } | 259 } |
| 261 } | 260 } |
| 262 | 261 |
| 263 void ForInStatement::AssignFeedbackSlots(FeedbackVectorSpec* spec, | 262 void ForInStatement::AssignFeedbackSlots(FeedbackVectorSpec* spec, |
| 264 LanguageMode language_mode, | 263 LanguageMode language_mode, |
| 265 FeedbackSlotCache* cache) { | 264 FeedbackSlotCache* cache) { |
| 266 AssignVectorSlots(each(), spec, language_mode, &each_slot_); | 265 AssignVectorSlots(each(), spec, language_mode, &each_slot_); |
| 267 for_in_feedback_slot_ = spec->AddGeneralSlot(); | 266 for_in_feedback_slot_ = spec->AddGeneralSlot(); |
| 268 } | 267 } |
| 269 | 268 |
| 270 Assignment::Assignment(Token::Value op, Expression* target, Expression* value, | 269 Assignment::Assignment(Token::Value op, Expression* target, Expression* value, |
| 271 int pos) | 270 int pos) |
| 272 : Expression(pos, kAssignment), | 271 : Expression(pos, kAssignment), |
| 273 target_(target), | 272 target_(target), |
| 274 value_(value), | 273 value_(value), |
| 275 binary_operation_(NULL) { | 274 binary_operation_(NULL) { |
| 276 bit_field_ |= IsUninitializedField::encode(false) | | 275 bit_field_ |= IsUninitializedField::encode(false) | |
| 277 KeyTypeField::encode(ELEMENT) | | 276 KeyTypeField::encode(ELEMENT) | |
| 278 StoreModeField::encode(STANDARD_STORE) | TokenField::encode(op); | 277 StoreModeField::encode(STANDARD_STORE) | TokenField::encode(op); |
| 279 } | 278 } |
| 280 | 279 |
| 281 void Assignment::AssignFeedbackSlots(FeedbackVectorSpec* spec, | 280 void Assignment::AssignFeedbackSlots(FeedbackVectorSpec* spec, |
| 282 LanguageMode language_mode, | 281 LanguageMode language_mode, |
| 283 FeedbackSlotCache* cache) { | 282 FeedbackSlotCache* cache) { |
| 284 AssignVectorSlots(target(), spec, language_mode, &slot_); | 283 AssignVectorSlots(target(), spec, language_mode, &slot_); |
| 284 if (true || FLAG_type_profile) { |
| 285 collect_type_profile_slot_ = spec->AddTypeProfileSlot(); |
| 286 } |
| 285 } | 287 } |
| 286 | 288 |
| 287 void CountOperation::AssignFeedbackSlots(FeedbackVectorSpec* spec, | 289 void CountOperation::AssignFeedbackSlots(FeedbackVectorSpec* spec, |
| 288 LanguageMode language_mode, | 290 LanguageMode language_mode, |
| 289 FeedbackSlotCache* cache) { | 291 FeedbackSlotCache* cache) { |
| 290 AssignVectorSlots(expression(), spec, language_mode, &slot_); | 292 AssignVectorSlots(expression(), spec, language_mode, &slot_); |
| 291 // Assign a slot to collect feedback about binary operations. Used only in | 293 // Assign a slot to collect feedback about binary operations. Used only in |
| 292 // ignition. Fullcodegen uses AstId to record type feedback. | 294 // ignition. Fullcodegen uses AstId to record type feedback. |
| 293 binary_operation_slot_ = spec->AddInterpreterBinaryOpICSlot(); | 295 binary_operation_slot_ = spec->AddInterpreterBinaryOpICSlot(); |
| 294 } | 296 } |
| (...skipping 811 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1106 #ifdef DEBUG | 1108 #ifdef DEBUG |
| 1107 return is_jsruntime() ? NameForNativeContextIntrinsicIndex(context_index_) | 1109 return is_jsruntime() ? NameForNativeContextIntrinsicIndex(context_index_) |
| 1108 : function_->name; | 1110 : function_->name; |
| 1109 #else | 1111 #else |
| 1110 return is_jsruntime() ? "(context function)" : function_->name; | 1112 return is_jsruntime() ? "(context function)" : function_->name; |
| 1111 #endif // DEBUG | 1113 #endif // DEBUG |
| 1112 } | 1114 } |
| 1113 | 1115 |
| 1114 } // namespace internal | 1116 } // namespace internal |
| 1115 } // namespace v8 | 1117 } // namespace v8 |
| OLD | NEW |