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 482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
493 optimization, | 493 optimization, |
494 argc, | 494 argc, |
495 receiver, | 495 receiver, |
496 true); | 496 true); |
497 } | 497 } |
498 | 498 |
499 | 499 |
500 class CallInterceptorCompiler BASE_EMBEDDED { | 500 class CallInterceptorCompiler BASE_EMBEDDED { |
501 public: | 501 public: |
502 CallInterceptorCompiler(CallStubCompiler* stub_compiler, | 502 CallInterceptorCompiler(CallStubCompiler* stub_compiler, |
503 const ParameterCount& arguments, | |
504 Register name) | 503 Register name) |
505 : stub_compiler_(stub_compiler), | 504 : stub_compiler_(stub_compiler), |
506 arguments_(arguments), | |
507 name_(name) {} | 505 name_(name) {} |
508 | 506 |
509 void Compile(MacroAssembler* masm, | 507 void Compile(MacroAssembler* masm, |
510 Handle<JSObject> object, | 508 Handle<JSObject> object, |
511 Handle<JSObject> holder, | 509 Handle<JSObject> holder, |
512 Handle<Name> name, | 510 Handle<Name> name, |
513 LookupResult* lookup, | 511 LookupResult* lookup, |
514 Register receiver, | 512 Register receiver, |
515 Register scratch1, | 513 Register scratch1, |
516 Register scratch2, | 514 Register scratch2, |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
630 __ pop(holder); | 628 __ pop(holder); |
631 __ pop(receiver); | 629 __ pop(receiver); |
632 // Leave the internal frame. | 630 // Leave the internal frame. |
633 } | 631 } |
634 | 632 |
635 __ cmp(eax, masm->isolate()->factory()->no_interceptor_result_sentinel()); | 633 __ cmp(eax, masm->isolate()->factory()->no_interceptor_result_sentinel()); |
636 __ j(not_equal, interceptor_succeeded); | 634 __ j(not_equal, interceptor_succeeded); |
637 } | 635 } |
638 | 636 |
639 CallStubCompiler* stub_compiler_; | 637 CallStubCompiler* stub_compiler_; |
640 const ParameterCount& arguments_; | |
641 Register name_; | 638 Register name_; |
642 }; | 639 }; |
643 | 640 |
644 | 641 |
645 void StoreStubCompiler::GenerateRestoreName(MacroAssembler* masm, | 642 void StoreStubCompiler::GenerateRestoreName(MacroAssembler* masm, |
646 Label* label, | 643 Label* label, |
647 Handle<Name> name) { | 644 Handle<Name> name) { |
648 if (!label->is_unused()) { | 645 if (!label->is_unused()) { |
649 __ bind(label); | 646 __ bind(label); |
650 __ mov(this->name(), Immediate(name)); | 647 __ mov(this->name(), Immediate(name)); |
(...skipping 921 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1572 | 1569 |
1573 // Get the number of arguments. | 1570 // Get the number of arguments. |
1574 const int argc = arguments().immediate(); | 1571 const int argc = arguments().immediate(); |
1575 | 1572 |
1576 LookupResult lookup(isolate()); | 1573 LookupResult lookup(isolate()); |
1577 LookupPostInterceptor(holder, name, &lookup); | 1574 LookupPostInterceptor(holder, name, &lookup); |
1578 | 1575 |
1579 // Get the receiver from the stack. | 1576 // Get the receiver from the stack. |
1580 __ mov(edx, Operand(esp, (argc + 1) * kPointerSize)); | 1577 __ mov(edx, Operand(esp, (argc + 1) * kPointerSize)); |
1581 | 1578 |
1582 CallInterceptorCompiler compiler(this, arguments(), ecx); | 1579 CallInterceptorCompiler compiler(this, ecx); |
1583 compiler.Compile(masm(), object, holder, name, &lookup, edx, ebx, edi, eax, | 1580 compiler.Compile(masm(), object, holder, name, &lookup, edx, ebx, edi, eax, |
1584 &miss); | 1581 &miss); |
1585 | 1582 |
1586 // Restore receiver. | 1583 // Restore receiver. |
1587 __ mov(edx, Operand(esp, (argc + 1) * kPointerSize)); | 1584 __ mov(edx, Operand(esp, (argc + 1) * kPointerSize)); |
1588 | 1585 |
1589 GenerateJumpFunction(object, eax, &miss); | 1586 GenerateJumpFunction(object, eax, &miss); |
1590 | 1587 |
1591 HandlerFrontendFooter(&miss); | 1588 HandlerFrontendFooter(&miss); |
1592 | 1589 |
(...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1961 // ----------------------------------- | 1958 // ----------------------------------- |
1962 TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Miss); | 1959 TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Miss); |
1963 } | 1960 } |
1964 | 1961 |
1965 | 1962 |
1966 #undef __ | 1963 #undef __ |
1967 | 1964 |
1968 } } // namespace v8::internal | 1965 } } // namespace v8::internal |
1969 | 1966 |
1970 #endif // V8_TARGET_ARCH_IA32 | 1967 #endif // V8_TARGET_ARCH_IA32 |
OLD | NEW |