OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
281 void AddMapIfMissing(Handle<Map> map, Zone* zone) { | 281 void AddMapIfMissing(Handle<Map> map, Zone* zone) { |
282 Map* updated = map->CurrentMapForDeprecated(); | 282 Map* updated = map->CurrentMapForDeprecated(); |
283 if (updated == NULL) return; | 283 if (updated == NULL) return; |
284 map = Handle<Map>(updated); | 284 map = Handle<Map>(updated); |
285 for (int i = 0; i < length(); ++i) { | 285 for (int i = 0; i < length(); ++i) { |
286 if (at(i).is_identical_to(map)) return; | 286 if (at(i).is_identical_to(map)) return; |
287 } | 287 } |
288 Add(map, zone); | 288 Add(map, zone); |
289 } | 289 } |
290 | 290 |
| 291 void FilterForPossibleTransitions(Map* root_map) { |
| 292 for (int i = list_.length() - 1; i >= 0; i--) { |
| 293 if (at(i)->FindRootMap() != root_map) { |
| 294 list_.RemoveElement(list_.at(i)); |
| 295 } |
| 296 } |
| 297 } |
| 298 |
291 void Add(Handle<Map> handle, Zone* zone) { | 299 void Add(Handle<Map> handle, Zone* zone) { |
292 list_.Add(handle.location(), zone); | 300 list_.Add(handle.location(), zone); |
293 } | 301 } |
294 | 302 |
295 Handle<Map> at(int i) const { | 303 Handle<Map> at(int i) const { |
296 return Handle<Map>(list_.at(i)); | 304 return Handle<Map>(list_.at(i)); |
297 } | 305 } |
298 | 306 |
299 Handle<Map> first() const { return at(0); } | 307 Handle<Map> first() const { return at(0); } |
300 Handle<Map> last() const { return at(length() - 1); } | 308 Handle<Map> last() const { return at(length() - 1); } |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
359 | 367 |
360 // Type feedback information for assignments and properties. | 368 // Type feedback information for assignments and properties. |
361 virtual bool IsMonomorphic() { | 369 virtual bool IsMonomorphic() { |
362 UNREACHABLE(); | 370 UNREACHABLE(); |
363 return false; | 371 return false; |
364 } | 372 } |
365 virtual SmallMapList* GetReceiverTypes() { | 373 virtual SmallMapList* GetReceiverTypes() { |
366 UNREACHABLE(); | 374 UNREACHABLE(); |
367 return NULL; | 375 return NULL; |
368 } | 376 } |
369 Handle<Map> GetMonomorphicReceiverType() { | |
370 ASSERT(IsMonomorphic()); | |
371 SmallMapList* types = GetReceiverTypes(); | |
372 ASSERT(types != NULL && types->length() == 1); | |
373 return types->at(0); | |
374 } | |
375 virtual KeyedAccessStoreMode GetStoreMode() { | 377 virtual KeyedAccessStoreMode GetStoreMode() { |
376 UNREACHABLE(); | 378 UNREACHABLE(); |
377 return STANDARD_STORE; | 379 return STANDARD_STORE; |
378 } | 380 } |
379 | 381 |
380 // TODO(rossberg): this should move to its own AST node eventually. | 382 // TODO(rossberg): this should move to its own AST node eventually. |
381 virtual void RecordToBooleanTypeFeedback(TypeFeedbackOracle* oracle); | 383 virtual void RecordToBooleanTypeFeedback(TypeFeedbackOracle* oracle); |
382 byte to_boolean_types() const { return to_boolean_types_; } | 384 byte to_boolean_types() const { return to_boolean_types_; } |
383 | 385 |
384 BailoutId id() const { return id_; } | 386 BailoutId id() const { return id_; } |
(...skipping 2870 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3255 private: | 3257 private: |
3256 Isolate* isolate_; | 3258 Isolate* isolate_; |
3257 Zone* zone_; | 3259 Zone* zone_; |
3258 Visitor visitor_; | 3260 Visitor visitor_; |
3259 }; | 3261 }; |
3260 | 3262 |
3261 | 3263 |
3262 } } // namespace v8::internal | 3264 } } // namespace v8::internal |
3263 | 3265 |
3264 #endif // V8_AST_H_ | 3266 #endif // V8_AST_H_ |
OLD | NEW |