| OLD | NEW |
| 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 831 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 842 optimization, | 842 optimization, |
| 843 argc, | 843 argc, |
| 844 receiver, | 844 receiver, |
| 845 true); | 845 true); |
| 846 } | 846 } |
| 847 | 847 |
| 848 | 848 |
| 849 class CallInterceptorCompiler BASE_EMBEDDED { | 849 class CallInterceptorCompiler BASE_EMBEDDED { |
| 850 public: | 850 public: |
| 851 CallInterceptorCompiler(CallStubCompiler* stub_compiler, | 851 CallInterceptorCompiler(CallStubCompiler* stub_compiler, |
| 852 const ParameterCount& arguments, | |
| 853 Register name) | 852 Register name) |
| 854 : stub_compiler_(stub_compiler), | 853 : stub_compiler_(stub_compiler), |
| 855 arguments_(arguments), | |
| 856 name_(name) {} | 854 name_(name) {} |
| 857 | 855 |
| 858 void Compile(MacroAssembler* masm, | 856 void Compile(MacroAssembler* masm, |
| 859 Handle<JSObject> object, | 857 Handle<JSObject> object, |
| 860 Handle<JSObject> holder, | 858 Handle<JSObject> holder, |
| 861 Handle<Name> name, | 859 Handle<Name> name, |
| 862 LookupResult* lookup, | 860 LookupResult* lookup, |
| 863 Register receiver, | 861 Register receiver, |
| 864 Register scratch1, | 862 Register scratch1, |
| 865 Register scratch2, | 863 Register scratch2, |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 977 __ pop(name_); | 975 __ pop(name_); |
| 978 __ pop(holder); | 976 __ pop(holder); |
| 979 __ pop(receiver); | 977 __ pop(receiver); |
| 980 } | 978 } |
| 981 // If interceptor returns no-result sentinel, call the constant function. | 979 // If interceptor returns no-result sentinel, call the constant function. |
| 982 __ LoadRoot(scratch, Heap::kNoInterceptorResultSentinelRootIndex); | 980 __ LoadRoot(scratch, Heap::kNoInterceptorResultSentinelRootIndex); |
| 983 __ Branch(interceptor_succeeded, ne, v0, Operand(scratch)); | 981 __ Branch(interceptor_succeeded, ne, v0, Operand(scratch)); |
| 984 } | 982 } |
| 985 | 983 |
| 986 CallStubCompiler* stub_compiler_; | 984 CallStubCompiler* stub_compiler_; |
| 987 const ParameterCount& arguments_; | |
| 988 Register name_; | 985 Register name_; |
| 989 }; | 986 }; |
| 990 | 987 |
| 991 | 988 |
| 992 void StubCompiler::GenerateTailCall(MacroAssembler* masm, Handle<Code> code) { | 989 void StubCompiler::GenerateTailCall(MacroAssembler* masm, Handle<Code> code) { |
| 993 __ Jump(code, RelocInfo::CODE_TARGET); | 990 __ Jump(code, RelocInfo::CODE_TARGET); |
| 994 } | 991 } |
| 995 | 992 |
| 996 | 993 |
| 997 #undef __ | 994 #undef __ |
| (...skipping 548 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1546 GenerateNameCheck(name, &miss); | 1543 GenerateNameCheck(name, &miss); |
| 1547 | 1544 |
| 1548 // Get the number of arguments. | 1545 // Get the number of arguments. |
| 1549 const int argc = arguments().immediate(); | 1546 const int argc = arguments().immediate(); |
| 1550 LookupResult lookup(isolate()); | 1547 LookupResult lookup(isolate()); |
| 1551 LookupPostInterceptor(holder, name, &lookup); | 1548 LookupPostInterceptor(holder, name, &lookup); |
| 1552 | 1549 |
| 1553 // Get the receiver from the stack. | 1550 // Get the receiver from the stack. |
| 1554 __ lw(a1, MemOperand(sp, argc * kPointerSize)); | 1551 __ lw(a1, MemOperand(sp, argc * kPointerSize)); |
| 1555 | 1552 |
| 1556 CallInterceptorCompiler compiler(this, arguments(), a2); | 1553 CallInterceptorCompiler compiler(this, a2); |
| 1557 compiler.Compile(masm(), object, holder, name, &lookup, a1, a3, t0, a0, | 1554 compiler.Compile(masm(), object, holder, name, &lookup, a1, a3, t0, a0, |
| 1558 &miss); | 1555 &miss); |
| 1559 | 1556 |
| 1560 // Move returned value, the function to call, to a1. | 1557 // Move returned value, the function to call, to a1. |
| 1561 __ mov(a1, v0); | 1558 __ mov(a1, v0); |
| 1562 // Restore receiver. | 1559 // Restore receiver. |
| 1563 __ lw(a0, MemOperand(sp, argc * kPointerSize)); | 1560 __ lw(a0, MemOperand(sp, argc * kPointerSize)); |
| 1564 | 1561 |
| 1565 GenerateJumpFunction(object, a1, &miss); | 1562 GenerateJumpFunction(object, a1, &miss); |
| 1566 | 1563 |
| (...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1955 // ----------------------------------- | 1952 // ----------------------------------- |
| 1956 TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Miss); | 1953 TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Miss); |
| 1957 } | 1954 } |
| 1958 | 1955 |
| 1959 | 1956 |
| 1960 #undef __ | 1957 #undef __ |
| 1961 | 1958 |
| 1962 } } // namespace v8::internal | 1959 } } // namespace v8::internal |
| 1963 | 1960 |
| 1964 #endif // V8_TARGET_ARCH_MIPS | 1961 #endif // V8_TARGET_ARCH_MIPS |
| OLD | NEW |