OLD | NEW |
1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 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 3753 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3764 | 3764 |
3765 // Add a label for checking the size of the code used for returning. | 3765 // Add a label for checking the size of the code used for returning. |
3766 #ifdef DEBUG | 3766 #ifdef DEBUG |
3767 Label check_exit_codesize; | 3767 Label check_exit_codesize; |
3768 masm_->bind(&check_exit_codesize); | 3768 masm_->bind(&check_exit_codesize); |
3769 #endif | 3769 #endif |
3770 | 3770 |
3771 // Leave the frame and return popping the arguments and the | 3771 // Leave the frame and return popping the arguments and the |
3772 // receiver. | 3772 // receiver. |
3773 frame_->Exit(); | 3773 frame_->Exit(); |
3774 masm_->ret((scope()->num_parameters() + 1) * kPointerSize); | 3774 int arguments_bytes = (scope()->num_parameters() + 1) * kPointerSize; |
| 3775 __ Ret(arguments_bytes, ecx); |
3775 DeleteFrame(); | 3776 DeleteFrame(); |
3776 | 3777 |
3777 #ifdef ENABLE_DEBUGGER_SUPPORT | 3778 #ifdef ENABLE_DEBUGGER_SUPPORT |
3778 // Check that the size of the code used for returning matches what is | 3779 // Check that the size of the code used for returning is large enough |
3779 // expected by the debugger. | 3780 // for the debugger's requirements. |
3780 ASSERT_EQ(Assembler::kJSReturnSequenceLength, | 3781 ASSERT(Assembler::kJSReturnSequenceLength <= |
3781 masm_->SizeOfCodeGeneratedSince(&check_exit_codesize)); | 3782 masm_->SizeOfCodeGeneratedSince(&check_exit_codesize)); |
3782 #endif | 3783 #endif |
3783 } | 3784 } |
3784 | 3785 |
3785 | 3786 |
3786 void CodeGenerator::VisitWithEnterStatement(WithEnterStatement* node) { | 3787 void CodeGenerator::VisitWithEnterStatement(WithEnterStatement* node) { |
3787 ASSERT(!in_spilled_code()); | 3788 ASSERT(!in_spilled_code()); |
3788 Comment cmnt(masm_, "[ WithEnterStatement"); | 3789 Comment cmnt(masm_, "[ WithEnterStatement"); |
3789 CodeForStatementPosition(node); | 3790 CodeForStatementPosition(node); |
3790 Load(node->expression()); | 3791 Load(node->expression()); |
3791 Result context; | 3792 Result context; |
(...skipping 6528 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10320 memcpy(chunk->GetStartAddress(), desc.buffer, desc.instr_size); | 10321 memcpy(chunk->GetStartAddress(), desc.buffer, desc.instr_size); |
10321 CPU::FlushICache(chunk->GetStartAddress(), desc.instr_size); | 10322 CPU::FlushICache(chunk->GetStartAddress(), desc.instr_size); |
10322 return FUNCTION_CAST<MemCopyFunction>(chunk->GetStartAddress()); | 10323 return FUNCTION_CAST<MemCopyFunction>(chunk->GetStartAddress()); |
10323 } | 10324 } |
10324 | 10325 |
10325 #undef __ | 10326 #undef __ |
10326 | 10327 |
10327 } } // namespace v8::internal | 10328 } } // namespace v8::internal |
10328 | 10329 |
10329 #endif // V8_TARGET_ARCH_IA32 | 10330 #endif // V8_TARGET_ARCH_IA32 |
OLD | NEW |