OLD | NEW |
1 // Copyright 2009 the V8 project authors. All rights reserved. | 1 // Copyright 2009 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 404 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
415 | 415 |
416 // Pushing an expression expects that the expression is trivial (according | 416 // Pushing an expression expects that the expression is trivial (according |
417 // to Expression::IsTrivial). | 417 // to Expression::IsTrivial). |
418 void Push(Expression* expr); | 418 void Push(Expression* expr); |
419 | 419 |
420 // Nip removes zero or more elements from immediately below the top | 420 // Nip removes zero or more elements from immediately below the top |
421 // of the frame, leaving the previous top-of-frame value on top of | 421 // of the frame, leaving the previous top-of-frame value on top of |
422 // the frame. Nip(k) is equivalent to x = Pop(), Drop(k), Push(x). | 422 // the frame. Nip(k) is equivalent to x = Pop(), Drop(k), Push(x). |
423 inline void Nip(int num_dropped); | 423 inline void Nip(int num_dropped); |
424 | 424 |
| 425 // Update the type information of a local variable frame element directly. |
| 426 inline void SetTypeForLocalAt(int index, NumberInfo info); |
| 427 |
425 private: | 428 private: |
426 static const int kLocal0Offset = JavaScriptFrameConstants::kLocal0Offset; | 429 static const int kLocal0Offset = JavaScriptFrameConstants::kLocal0Offset; |
427 static const int kFunctionOffset = JavaScriptFrameConstants::kFunctionOffset; | 430 static const int kFunctionOffset = JavaScriptFrameConstants::kFunctionOffset; |
428 static const int kContextOffset = StandardFrameConstants::kContextOffset; | 431 static const int kContextOffset = StandardFrameConstants::kContextOffset; |
429 | 432 |
430 static const int kHandlerSize = StackHandlerConstants::kSize / kPointerSize; | 433 static const int kHandlerSize = StackHandlerConstants::kSize / kPointerSize; |
431 static const int kPreallocatedElements = 5 + 8; // 8 expression stack slots. | 434 static const int kPreallocatedElements = 5 + 8; // 8 expression stack slots. |
432 | 435 |
433 ZoneList<FrameElement> elements_; | 436 ZoneList<FrameElement> elements_; |
434 | 437 |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
590 inline bool Equals(VirtualFrame* other); | 593 inline bool Equals(VirtualFrame* other); |
591 | 594 |
592 // Classes that need raw access to the elements_ array. | 595 // Classes that need raw access to the elements_ array. |
593 friend class DeferredCode; | 596 friend class DeferredCode; |
594 friend class JumpTarget; | 597 friend class JumpTarget; |
595 }; | 598 }; |
596 | 599 |
597 } } // namespace v8::internal | 600 } } // namespace v8::internal |
598 | 601 |
599 #endif // V8_IA32_VIRTUAL_FRAME_IA32_H_ | 602 #endif // V8_IA32_VIRTUAL_FRAME_IA32_H_ |
OLD | NEW |