Chromium Code Reviews| 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 364 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 375 __ pop(Operand(rbp, SlotOffset(var->slot()))); | 375 __ pop(Operand(rbp, SlotOffset(var->slot()))); | 
| 376 } | 376 } | 
| 377 break; | 377 break; | 
| 378 case Slot::CONTEXT: | 378 case Slot::CONTEXT: | 
| 379 // The variable in the decl always resides in the current context. | 379 // The variable in the decl always resides in the current context. | 
| 380 ASSERT(function_->scope()->ContextChainLength(slot->var()->scope()) == 0); | 380 ASSERT(function_->scope()->ContextChainLength(slot->var()->scope()) == 0); | 
| 381 if (decl->mode() == Variable::CONST) { | 381 if (decl->mode() == Variable::CONST) { | 
| 382 __ Move(rax, Factory::the_hole_value()); | 382 __ Move(rax, Factory::the_hole_value()); | 
| 383 if (FLAG_debug_code) { | 383 if (FLAG_debug_code) { | 
| 384 // Check if we have the correct context pointer. | 384 // Check if we have the correct context pointer. | 
| 385 __ movq(rbx, CodeGenerator::ContextOperand( | 385 __ movq(rbx, CodeGenerator::ContextOperand(rsi, | 
| 386 rsi, Context::FCONTEXT_INDEX)); | 386 Context::FCONTEXT_INDEX)); | 
| 387 __ cmpq(rbx, rsi); | 387 __ cmpq(rbx, rsi); | 
| 388 __ Check(equal, "Unexpected declaration in current context."); | 388 __ Check(equal, "Unexpected declaration in current context."); | 
| 389 } | 389 } | 
| 390 __ movq(CodeGenerator::ContextOperand(rsi, slot->index()), rax); | 390 __ movq(CodeGenerator::ContextOperand(rsi, slot->index()), rax); | 
| 391 // No write barrier since the_hole_value is in old space. | 391 // No write barrier since the_hole_value is in old space. | 
| 392 ASSERT(Heap::InNewSpace(*Factory::the_hole_value())); | 392 ASSERT(!Heap::InNewSpace(*Factory::the_hole_value())); | 
| 
 
Lasse Reichstein
2009/11/24 14:21:36
I can't see how we could have been hitting this at
 
fschneider
2009/11/25 01:02:59
Thanks for fixing this along the way. I'm not sure
 
Lasse Reichstein
2009/11/25 08:56:26
Since the code isn't hit at all now, it's an easy
 
 | |
| 393 } else if (decl->fun() != NULL) { | 393 } else if (decl->fun() != NULL) { | 
| 394 Visit(decl->fun()); | 394 Visit(decl->fun()); | 
| 395 __ pop(rax); | 395 __ pop(rax); | 
| 396 if (FLAG_debug_code) { | 396 if (FLAG_debug_code) { | 
| 397 // Check if we have the correct context pointer. | 397 // Check if we have the correct context pointer. | 
| 398 __ movq(rbx, CodeGenerator::ContextOperand( | 398 __ movq(rbx, CodeGenerator::ContextOperand(rsi, | 
| 399 rsi, Context::FCONTEXT_INDEX)); | 399 Context::FCONTEXT_INDEX)); | 
| 400 __ cmpq(rbx, rsi); | 400 __ cmpq(rbx, rsi); | 
| 401 __ Check(equal, "Unexpected declaration in current context."); | 401 __ Check(equal, "Unexpected declaration in current context."); | 
| 402 } | 402 } | 
| 403 __ movq(CodeGenerator::ContextOperand(rsi, slot->index()), rax); | 403 __ movq(CodeGenerator::ContextOperand(rsi, slot->index()), rax); | 
| 404 int offset = FixedArray::kHeaderSize + slot->index() * kPointerSize; | 404 int offset = Context::SlotOffset(slot->index()); | 
| 405 __ RecordWrite(rsi, offset, rax, rcx); | 405 __ RecordWrite(rsi, offset, rax, rcx); | 
| 406 } | 406 } | 
| 407 break; | 407 break; | 
| 408 default: | 408 default: | 
| 409 UNREACHABLE(); | 409 UNREACHABLE(); | 
| 410 } | 410 } | 
| 411 } | 411 } | 
| 412 | 412 | 
| 413 | 413 | 
| 414 void FastCodeGenerator::DeclareGlobals(Handle<FixedArray> pairs) { | 414 void FastCodeGenerator::DeclareGlobals(Handle<FixedArray> pairs) { | 
| (...skipping 1133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1548 true_label_ = saved_true; | 1548 true_label_ = saved_true; | 
| 1549 false_label_ = saved_false; | 1549 false_label_ = saved_false; | 
| 1550 // Convert current context to test context: End post-test code. | 1550 // Convert current context to test context: End post-test code. | 
| 1551 } | 1551 } | 
| 1552 | 1552 | 
| 1553 | 1553 | 
| 1554 #undef __ | 1554 #undef __ | 
| 1555 | 1555 | 
| 1556 | 1556 | 
| 1557 } } // namespace v8::internal | 1557 } } // namespace v8::internal | 
| OLD | NEW |