OLD | NEW |
1 // Copyright 2006-2009 the V8 project authors. All rights reserved. | 1 // Copyright 2006-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 490 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
501 lookup->holder(), | 501 lookup->holder(), |
502 lookup->GetFieldIndex()); | 502 lookup->GetFieldIndex()); |
503 __ Ret(); | 503 __ Ret(); |
504 } else { | 504 } else { |
505 ASSERT(lookup->type() == CALLBACKS); | 505 ASSERT(lookup->type() == CALLBACKS); |
506 ASSERT(lookup->GetCallbackObject()->IsAccessorInfo()); | 506 ASSERT(lookup->GetCallbackObject()->IsAccessorInfo()); |
507 ASSERT(callback != NULL); | 507 ASSERT(callback != NULL); |
508 ASSERT(callback->getter() != NULL); | 508 ASSERT(callback->getter() != NULL); |
509 | 509 |
510 Label cleanup; | 510 Label cleanup; |
511 __ pop(scratch2); | 511 __ push(receiver); |
512 __ Push(receiver, scratch2); | |
513 | 512 |
514 holder = stub_compiler->CheckPrototypes(holder_obj, holder, | 513 holder = stub_compiler->CheckPrototypes(holder_obj, holder, |
515 lookup->holder(), scratch1, | 514 lookup->holder(), scratch1, |
516 scratch2, | 515 scratch2, |
517 name, | 516 name, |
518 &cleanup); | 517 &cleanup); |
519 | 518 |
520 __ push(holder); | 519 __ push(holder); |
521 __ Move(holder, Handle<AccessorInfo>(callback)); | 520 __ Move(holder, Handle<AccessorInfo>(callback)); |
522 __ push(holder); | 521 __ push(holder); |
523 __ ldr(scratch1, FieldMemOperand(holder, AccessorInfo::kDataOffset)); | 522 __ ldr(scratch1, FieldMemOperand(holder, AccessorInfo::kDataOffset)); |
524 __ Push(scratch1, name_); | 523 __ Push(scratch1, name_); |
525 | 524 |
526 ExternalReference ref = | 525 ExternalReference ref = |
527 ExternalReference(IC_Utility(IC::kLoadCallbackProperty)); | 526 ExternalReference(IC_Utility(IC::kLoadCallbackProperty)); |
528 __ TailCallExternalReference(ref, 5, 1); | 527 __ TailCallExternalReference(ref, 5, 1); |
529 | 528 |
530 __ bind(&cleanup); | 529 __ bind(&cleanup); |
531 __ pop(scratch1); | |
532 __ pop(scratch2); | 530 __ pop(scratch2); |
533 __ push(scratch1); | |
534 } | 531 } |
535 } | 532 } |
536 | 533 |
537 | 534 |
538 void CompileRegular(MacroAssembler* masm, | 535 void CompileRegular(MacroAssembler* masm, |
539 Register receiver, | 536 Register receiver, |
540 Register holder, | 537 Register holder, |
541 Register scratch, | 538 Register scratch, |
542 JSObject* holder_obj, | 539 JSObject* holder_obj, |
543 Label* miss_label) { | 540 Label* miss_label) { |
(...skipping 1605 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2149 // Return the generated code. | 2146 // Return the generated code. |
2150 return GetCode(); | 2147 return GetCode(); |
2151 } | 2148 } |
2152 | 2149 |
2153 | 2150 |
2154 #undef __ | 2151 #undef __ |
2155 | 2152 |
2156 } } // namespace v8::internal | 2153 } } // namespace v8::internal |
2157 | 2154 |
2158 #endif // V8_TARGET_ARCH_ARM | 2155 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |