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

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

Issue 201042: Win64 - Allow returning two values from a runtime function. (Closed)
Patch Set: Fixed typo. Created 11 years, 3 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
OLDNEW
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 460 matching lines...) Expand 10 before | Expand all | Expand 10 after
471 __ push(reg); // holder 471 __ push(reg); // holder
472 __ mov(ip, Operand(Handle<AccessorInfo>(callback))); // callback data 472 __ mov(ip, Operand(Handle<AccessorInfo>(callback))); // callback data
473 __ push(ip); 473 __ push(ip);
474 __ ldr(reg, FieldMemOperand(ip, AccessorInfo::kDataOffset)); 474 __ ldr(reg, FieldMemOperand(ip, AccessorInfo::kDataOffset));
475 __ push(reg); 475 __ push(reg);
476 __ push(name_reg); // name 476 __ push(name_reg); // name
477 477
478 // Do tail-call to the runtime system. 478 // Do tail-call to the runtime system.
479 ExternalReference load_callback_property = 479 ExternalReference load_callback_property =
480 ExternalReference(IC_Utility(IC::kLoadCallbackProperty)); 480 ExternalReference(IC_Utility(IC::kLoadCallbackProperty));
481 __ TailCallRuntime(load_callback_property, 5); 481 __ TailCallRuntime(load_callback_property, 5, 1);
482 } 482 }
483 483
484 484
485 void StubCompiler::GenerateLoadInterceptor(JSObject* object, 485 void StubCompiler::GenerateLoadInterceptor(JSObject* object,
486 JSObject* holder, 486 JSObject* holder,
487 LookupResult* lookup, 487 LookupResult* lookup,
488 Register receiver, 488 Register receiver,
489 Register name_reg, 489 Register name_reg,
490 Register scratch1, 490 Register scratch1,
491 Register scratch2, 491 Register scratch2,
(...skipping 15 matching lines...) Expand all
507 InterceptorInfo* interceptor = holder->GetNamedInterceptor(); 507 InterceptorInfo* interceptor = holder->GetNamedInterceptor();
508 ASSERT(!Heap::InNewSpace(interceptor)); 508 ASSERT(!Heap::InNewSpace(interceptor));
509 __ mov(scratch1, Operand(Handle<Object>(interceptor))); 509 __ mov(scratch1, Operand(Handle<Object>(interceptor)));
510 __ push(scratch1); 510 __ push(scratch1);
511 __ ldr(scratch2, FieldMemOperand(scratch1, InterceptorInfo::kDataOffset)); 511 __ ldr(scratch2, FieldMemOperand(scratch1, InterceptorInfo::kDataOffset));
512 __ push(scratch2); 512 __ push(scratch2);
513 513
514 // Do tail-call to the runtime system. 514 // Do tail-call to the runtime system.
515 ExternalReference load_ic_property = 515 ExternalReference load_ic_property =
516 ExternalReference(IC_Utility(IC::kLoadPropertyWithInterceptorForLoad)); 516 ExternalReference(IC_Utility(IC::kLoadPropertyWithInterceptorForLoad));
517 __ TailCallRuntime(load_ic_property, 5); 517 __ TailCallRuntime(load_ic_property, 5, 1);
518 } 518 }
519 519
520 520
521 Object* StubCompiler::CompileLazyCompile(Code::Flags flags) { 521 Object* StubCompiler::CompileLazyCompile(Code::Flags flags) {
522 // ----------- S t a t e ------------- 522 // ----------- S t a t e -------------
523 // -- r1: function 523 // -- r1: function
524 // -- lr: return address 524 // -- lr: return address
525 // ----------------------------------- 525 // -----------------------------------
526 526
527 // Enter an internal frame. 527 // Enter an internal frame.
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after
877 __ ldr(ip, MemOperand(sp)); // receiver 877 __ ldr(ip, MemOperand(sp)); // receiver
878 __ push(ip); 878 __ push(ip);
879 __ mov(ip, Operand(Handle<AccessorInfo>(callback))); // callback info 879 __ mov(ip, Operand(Handle<AccessorInfo>(callback))); // callback info
880 __ push(ip); 880 __ push(ip);
881 __ push(r2); // name 881 __ push(r2); // name
882 __ push(r0); // value 882 __ push(r0); // value
883 883
884 // Do tail-call to the runtime system. 884 // Do tail-call to the runtime system.
885 ExternalReference store_callback_property = 885 ExternalReference store_callback_property =
886 ExternalReference(IC_Utility(IC::kStoreCallbackProperty)); 886 ExternalReference(IC_Utility(IC::kStoreCallbackProperty));
887 __ TailCallRuntime(store_callback_property, 4); 887 __ TailCallRuntime(store_callback_property, 4, 1);
888 888
889 // Handle store cache miss. 889 // Handle store cache miss.
890 __ bind(&miss); 890 __ bind(&miss);
891 __ mov(r2, Operand(Handle<String>(name))); // restore name 891 __ mov(r2, Operand(Handle<String>(name))); // restore name
892 Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Miss)); 892 Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Miss));
893 __ Jump(ic, RelocInfo::CODE_TARGET); 893 __ Jump(ic, RelocInfo::CODE_TARGET);
894 894
895 // Return the generated code. 895 // Return the generated code.
896 return GetCode(CALLBACKS, name); 896 return GetCode(CALLBACKS, name);
897 } 897 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
929 ASSERT(receiver->IsJSGlobalProxy() || !receiver->IsAccessCheckNeeded()); 929 ASSERT(receiver->IsJSGlobalProxy() || !receiver->IsAccessCheckNeeded());
930 930
931 __ ldr(ip, MemOperand(sp)); // receiver 931 __ ldr(ip, MemOperand(sp)); // receiver
932 __ push(ip); 932 __ push(ip);
933 __ push(r2); // name 933 __ push(r2); // name
934 __ push(r0); // value 934 __ push(r0); // value
935 935
936 // Do tail-call to the runtime system. 936 // Do tail-call to the runtime system.
937 ExternalReference store_ic_property = 937 ExternalReference store_ic_property =
938 ExternalReference(IC_Utility(IC::kStoreInterceptorProperty)); 938 ExternalReference(IC_Utility(IC::kStoreInterceptorProperty));
939 __ TailCallRuntime(store_ic_property, 3); 939 __ TailCallRuntime(store_ic_property, 3, 1);
940 940
941 // Handle store cache miss. 941 // Handle store cache miss.
942 __ bind(&miss); 942 __ bind(&miss);
943 __ mov(r2, Operand(Handle<String>(name))); // restore name 943 __ mov(r2, Operand(Handle<String>(name))); // restore name
944 Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Miss)); 944 Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Miss));
945 __ Jump(ic, RelocInfo::CODE_TARGET); 945 __ Jump(ic, RelocInfo::CODE_TARGET);
946 946
947 // Return the generated code. 947 // Return the generated code.
948 return GetCode(INTERCEPTOR, name); 948 return GetCode(INTERCEPTOR, name);
949 } 949 }
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after
1350 __ Jump(generic_construct_stub, RelocInfo::CODE_TARGET); 1350 __ Jump(generic_construct_stub, RelocInfo::CODE_TARGET);
1351 1351
1352 // Return the generated code. 1352 // Return the generated code.
1353 return GetCode(); 1353 return GetCode();
1354 } 1354 }
1355 1355
1356 1356
1357 #undef __ 1357 #undef __
1358 1358
1359 } } // namespace v8::internal 1359 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/arm/macro-assembler-arm.cc ('k') | src/codegen.h » ('j') | src/codegen.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698