Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: src/mips/builtins-mips.cc

Issue 9511002: MIPS: Implement inlining of constructor calls. (Closed)
Patch Set: Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | src/mips/code-stubs-mips.cc » ('j') | src/mips/code-stubs-mips.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 990 matching lines...) Expand 10 before | Expand all | Expand 10 after
1001 masm->isolate()->builtins()->HandleApiCallConstruct(); 1001 masm->isolate()->builtins()->HandleApiCallConstruct();
1002 ParameterCount expected(0); 1002 ParameterCount expected(0);
1003 __ InvokeCode(code, expected, expected, 1003 __ InvokeCode(code, expected, expected,
1004 RelocInfo::CODE_TARGET, CALL_FUNCTION, CALL_AS_METHOD); 1004 RelocInfo::CODE_TARGET, CALL_FUNCTION, CALL_AS_METHOD);
1005 } else { 1005 } else {
1006 ParameterCount actual(a0); 1006 ParameterCount actual(a0);
1007 __ InvokeFunction(a1, actual, CALL_FUNCTION, 1007 __ InvokeFunction(a1, actual, CALL_FUNCTION,
1008 NullCallWrapper(), CALL_AS_METHOD); 1008 NullCallWrapper(), CALL_AS_METHOD);
1009 } 1009 }
1010 1010
1011 // Store offset of return address for deoptimizer.
1012 if (!is_api_function && !count_constructions) {
1013 masm->isolate()->heap()->SetConstructStubDeoptPCOffset(masm->pc_offset());
1014 }
1015
1011 // Restore context from the frame. 1016 // Restore context from the frame.
1012 __ lw(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); 1017 __ lw(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
1013 1018
1014 // If the result is an object (in the ECMA sense), we should get rid 1019 // If the result is an object (in the ECMA sense), we should get rid
1015 // of the receiver and use the result; see ECMA-262 section 13.2.2-7 1020 // of the receiver and use the result; see ECMA-262 section 13.2.2-7
1016 // on page 74. 1021 // on page 74.
1017 Label use_receiver, exit; 1022 Label use_receiver, exit;
1018 1023
1019 // If the result is a smi, it is *not* an object in the ECMA sense. 1024 // If the result is a smi, it is *not* an object in the ECMA sense.
1020 // v0: result 1025 // v0: result
(...skipping 749 matching lines...) Expand 10 before | Expand all | Expand 10 after
1770 __ bind(&fill); 1775 __ bind(&fill);
1771 __ push(t0); 1776 __ push(t0);
1772 __ Branch(&fill, ne, sp, Operand(a2)); 1777 __ Branch(&fill, ne, sp, Operand(a2));
1773 } 1778 }
1774 1779
1775 // Call the entry point. 1780 // Call the entry point.
1776 __ bind(&invoke); 1781 __ bind(&invoke);
1777 1782
1778 __ Call(a3); 1783 __ Call(a3);
1779 1784
1785 // Store offset of return address for deoptimizer.
1780 masm->isolate()->heap()->SetArgumentsAdaptorDeoptPCOffset(masm->pc_offset()); 1786 masm->isolate()->heap()->SetArgumentsAdaptorDeoptPCOffset(masm->pc_offset());
1787
1781 // Exit frame and return. 1788 // Exit frame and return.
1782 LeaveArgumentsAdaptorFrame(masm); 1789 LeaveArgumentsAdaptorFrame(masm);
1783 __ Ret(); 1790 __ Ret();
1784 1791
1785 1792
1786 // ------------------------------------------- 1793 // -------------------------------------------
1787 // Don't adapt arguments. 1794 // Don't adapt arguments.
1788 // ------------------------------------------- 1795 // -------------------------------------------
1789 __ bind(&dont_adapt_arguments); 1796 __ bind(&dont_adapt_arguments);
1790 __ Jump(a3); 1797 __ Jump(a3);
1791 } 1798 }
1792 1799
1793 1800
1794 #undef __ 1801 #undef __
1795 1802
1796 } } // namespace v8::internal 1803 } } // namespace v8::internal
1797 1804
1798 #endif // V8_TARGET_ARCH_MIPS 1805 #endif // V8_TARGET_ARCH_MIPS
OLDNEW
« no previous file with comments | « no previous file | src/mips/code-stubs-mips.cc » ('j') | src/mips/code-stubs-mips.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698