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

Side by Side Diff: src/stub-cache-arm.cc

Issue 7420: No more failures than before. It is ready to be reviewed. (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 12 years, 2 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 | Annotate | Revision Log
« no previous file with comments | « src/macro-assembler-arm.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. 1 // Copyright 2006-2008 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 402 matching lines...) Expand 10 before | Expand all | Expand 10 after
413 // Check that the receiver isn't a smi. 413 // Check that the receiver isn't a smi.
414 __ tst(r3, Operand(kSmiTagMask)); 414 __ tst(r3, Operand(kSmiTagMask));
415 __ b(eq, &miss); 415 __ b(eq, &miss);
416 416
417 // Check that the map of the receiver hasn't changed. 417 // Check that the map of the receiver hasn't changed.
418 __ ldr(r1, FieldMemOperand(r3, HeapObject::kMapOffset)); 418 __ ldr(r1, FieldMemOperand(r3, HeapObject::kMapOffset));
419 __ cmp(r1, Operand(Handle<Map>(object->map()))); 419 __ cmp(r1, Operand(Handle<Map>(object->map())));
420 __ b(ne, &miss); 420 __ b(ne, &miss);
421 421
422 // Perform global security token check if needed. 422 // Perform global security token check if needed.
423 if (object->IsJSGlobalObject()) { 423 if (object->IsJSGlobalProxy()) {
424 __ CheckAccessGlobal(r3, r1, &miss); 424 __ CheckAccessGlobalProxy(r3, r1, &miss);
425 } 425 }
426 426
427 // Stub never generated for non-global objects that require access 427 // Stub never generated for non-global objects that require access
428 // checks. 428 // checks.
429 ASSERT(object->IsJSGlobalObject() || !object->IsAccessCheckNeeded()); 429 ASSERT(object->IsJSGlobalProxy() || !object->IsAccessCheckNeeded());
430 430
431 // Perform map transition for the receiver if necessary. 431 // Perform map transition for the receiver if necessary.
432 if ((transition != NULL) && (object->map()->unused_property_fields() == 0)) { 432 if ((transition != NULL) && (object->map()->unused_property_fields() == 0)) {
433 // The properties must be extended before we can store the value. 433 // The properties must be extended before we can store the value.
434 // We jump to a runtime call that extends the propeties array. 434 // We jump to a runtime call that extends the propeties array.
435 __ mov(r2, Operand(Handle<Map>(transition))); 435 __ mov(r2, Operand(Handle<Map>(transition)));
436 // Please note, if we implement keyed store for arm we need 436 // Please note, if we implement keyed store for arm we need
437 // to call the Builtins::KeyedStoreIC_ExtendStorage. 437 // to call the Builtins::KeyedStoreIC_ExtendStorage.
438 Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_ExtendStorage)); 438 Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_ExtendStorage));
439 __ Jump(ic, RelocInfo::CODE_TARGET); 439 __ Jump(ic, RelocInfo::CODE_TARGET);
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 // Check that the object isn't a smi. 515 // Check that the object isn't a smi.
516 __ tst(r3, Operand(kSmiTagMask)); 516 __ tst(r3, Operand(kSmiTagMask));
517 __ b(eq, &miss); 517 __ b(eq, &miss);
518 518
519 // Check that the map of the object hasn't changed. 519 // Check that the map of the object hasn't changed.
520 __ ldr(r1, FieldMemOperand(r3, HeapObject::kMapOffset)); 520 __ ldr(r1, FieldMemOperand(r3, HeapObject::kMapOffset));
521 __ cmp(r1, Operand(Handle<Map>(object->map()))); 521 __ cmp(r1, Operand(Handle<Map>(object->map())));
522 __ b(ne, &miss); 522 __ b(ne, &miss);
523 523
524 // Perform global security token check if needed. 524 // Perform global security token check if needed.
525 if (object->IsJSGlobalObject()) { 525 if (object->IsJSGlobalProxy()) {
526 __ CheckAccessGlobal(r3, r1, &miss); 526 __ CheckAccessGlobalProxy(r3, r1, &miss);
527 } 527 }
528 528
529 // Stub never generated for non-global objects that require access 529 // Stub never generated for non-global objects that require access
530 // checks. 530 // checks.
531 ASSERT(object->IsJSGlobalObject() || !object->IsAccessCheckNeeded()); 531 ASSERT(object->IsJSGlobalProxy() || !object->IsAccessCheckNeeded());
532 532
533 __ ldr(ip, MemOperand(sp)); // receiver 533 __ ldr(ip, MemOperand(sp)); // receiver
534 __ push(ip); 534 __ push(ip);
535 __ mov(ip, Operand(Handle<AccessorInfo>(callback))); // callback info 535 __ mov(ip, Operand(Handle<AccessorInfo>(callback))); // callback info
536 __ push(ip); 536 __ push(ip);
537 __ push(r2); // name 537 __ push(r2); // name
538 __ push(r0); // value 538 __ push(r0); // value
539 539
540 // Do tail-call to the runtime system. 540 // Do tail-call to the runtime system.
541 ExternalReference store_callback_property = 541 ExternalReference store_callback_property =
(...skipping 29 matching lines...) Expand all
571 // Check that the object isn't a smi. 571 // Check that the object isn't a smi.
572 __ tst(r3, Operand(kSmiTagMask)); 572 __ tst(r3, Operand(kSmiTagMask));
573 __ b(eq, &miss); 573 __ b(eq, &miss);
574 574
575 // Check that the map of the object hasn't changed. 575 // Check that the map of the object hasn't changed.
576 __ ldr(r1, FieldMemOperand(r3, HeapObject::kMapOffset)); 576 __ ldr(r1, FieldMemOperand(r3, HeapObject::kMapOffset));
577 __ cmp(r1, Operand(Handle<Map>(receiver->map()))); 577 __ cmp(r1, Operand(Handle<Map>(receiver->map())));
578 __ b(ne, &miss); 578 __ b(ne, &miss);
579 579
580 // Perform global security token check if needed. 580 // Perform global security token check if needed.
581 if (receiver->IsJSGlobalObject()) { 581 if (receiver->IsJSGlobalProxy()) {
582 __ CheckAccessGlobal(r3, r1, &miss); 582 __ CheckAccessGlobalProxy(r3, r1, &miss);
583 } 583 }
584 584
585 // Stub never generated for non-global objects that require access 585 // Stub never generated for non-global objects that require access
586 // checks. 586 // checks.
587 ASSERT(receiver->IsJSGlobalObject() || !receiver->IsAccessCheckNeeded()); 587 ASSERT(receiver->IsJSGlobalProxy() || !receiver->IsAccessCheckNeeded());
588 588
589 __ ldr(ip, MemOperand(sp)); // receiver 589 __ ldr(ip, MemOperand(sp)); // receiver
590 __ push(ip); 590 __ push(ip);
591 __ push(r2); // name 591 __ push(r2); // name
592 __ push(r0); // value 592 __ push(r0); // value
593 593
594 // Do tail-call to the runtime system. 594 // Do tail-call to the runtime system.
595 ExternalReference store_ic_property = 595 ExternalReference store_ic_property =
596 ExternalReference(IC_Utility(IC::kStoreInterceptorProperty)); 596 ExternalReference(IC_Utility(IC::kStoreInterceptorProperty));
597 __ TailCallRuntime(store_ic_property, 3); 597 __ TailCallRuntime(store_ic_property, 3);
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
830 String* name) { 830 String* name) {
831 UNIMPLEMENTED(); 831 UNIMPLEMENTED();
832 return Heap::undefined_value(); 832 return Heap::undefined_value();
833 } 833 }
834 834
835 835
836 836
837 #undef __ 837 #undef __
838 838
839 } } // namespace v8::internal 839 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/macro-assembler-arm.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698