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 5537 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5548 ASSERT(!is_illegal()); | 5548 ASSERT(!is_illegal()); |
5549 if (type_ != SLOT) { | 5549 if (type_ != SLOT) { |
5550 GetValue(typeof_state); | 5550 GetValue(typeof_state); |
5551 return; | 5551 return; |
5552 } | 5552 } |
5553 | 5553 |
5554 Slot* slot = expression_->AsVariableProxy()->AsVariable()->slot(); | 5554 Slot* slot = expression_->AsVariableProxy()->AsVariable()->slot(); |
5555 ASSERT(slot != NULL); | 5555 ASSERT(slot != NULL); |
5556 if (slot->type() == Slot::LOOKUP || | 5556 if (slot->type() == Slot::LOOKUP || |
5557 slot->type() == Slot::CONTEXT || | 5557 slot->type() == Slot::CONTEXT || |
5558 slot->var()->mode() == Variable::CONST) { | 5558 slot->var()->mode() == Variable::CONST || |
| 5559 slot->is_arguments()) { |
5559 GetValue(typeof_state); | 5560 GetValue(typeof_state); |
5560 return; | 5561 return; |
5561 } | 5562 } |
5562 | 5563 |
5563 // Only non-constant, frame-allocated parameters and locals can reach | 5564 // Only non-constant, frame-allocated parameters and locals can reach |
5564 // here. | 5565 // here. Be careful not to use the optimizations for arguments |
| 5566 // object access since it may not have been initialized yet. |
| 5567 ASSERT(!slot->is_arguments()); |
5565 if (slot->type() == Slot::PARAMETER) { | 5568 if (slot->type() == Slot::PARAMETER) { |
5566 cgen_->frame()->TakeParameterAt(slot->index()); | 5569 cgen_->frame()->TakeParameterAt(slot->index()); |
5567 } else { | 5570 } else { |
5568 ASSERT(slot->type() == Slot::LOCAL); | 5571 ASSERT(slot->type() == Slot::LOCAL); |
5569 cgen_->frame()->TakeLocalAt(slot->index()); | 5572 cgen_->frame()->TakeLocalAt(slot->index()); |
5570 } | 5573 } |
5571 } | 5574 } |
5572 | 5575 |
5573 | 5576 |
5574 void Reference::SetValue(InitState init_state) { | 5577 void Reference::SetValue(InitState init_state) { |
(...skipping 1646 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7221 int CompareStub::MinorKey() { | 7224 int CompareStub::MinorKey() { |
7222 // Encode the two parameters in a unique 16 bit value. | 7225 // Encode the two parameters in a unique 16 bit value. |
7223 ASSERT(static_cast<unsigned>(cc_) < (1 << 15)); | 7226 ASSERT(static_cast<unsigned>(cc_) < (1 << 15)); |
7224 return (static_cast<unsigned>(cc_) << 1) | (strict_ ? 1 : 0); | 7227 return (static_cast<unsigned>(cc_) << 1) | (strict_ ? 1 : 0); |
7225 } | 7228 } |
7226 | 7229 |
7227 | 7230 |
7228 #undef __ | 7231 #undef __ |
7229 | 7232 |
7230 } } // namespace v8::internal | 7233 } } // namespace v8::internal |
OLD | NEW |