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

Side by Side Diff: src/x64/codegen-x64.cc

Issue 558069: Change StoreIC interface on x64 to pass receiver in rdx, not on stack. (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 10 years, 10 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/ia32/debug-ia32.cc ('k') | src/x64/debug-x64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2010 the V8 project authors. All rights reserved. 1 // Copyright 2010 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 2421 matching lines...) Expand 10 before | Expand all | Expand 10 after
2432 if (CompileTimeValue::IsCompileTimeValue(property->value())) break; 2432 if (CompileTimeValue::IsCompileTimeValue(property->value())) break;
2433 // else fall through. 2433 // else fall through.
2434 case ObjectLiteral::Property::COMPUTED: { 2434 case ObjectLiteral::Property::COMPUTED: {
2435 Handle<Object> key(property->key()->handle()); 2435 Handle<Object> key(property->key()->handle());
2436 if (key->IsSymbol()) { 2436 if (key->IsSymbol()) {
2437 // Duplicate the object as the IC receiver. 2437 // Duplicate the object as the IC receiver.
2438 frame_->Dup(); 2438 frame_->Dup();
2439 Load(property->value()); 2439 Load(property->value());
2440 frame_->Push(key); 2440 frame_->Push(key);
2441 Result ignored = frame_->CallStoreIC(); 2441 Result ignored = frame_->CallStoreIC();
2442 // Drop the duplicated receiver and ignore the result.
2443 frame_->Drop();
2444 break; 2442 break;
2445 } 2443 }
2446 // Fall through 2444 // Fall through
2447 } 2445 }
2448 case ObjectLiteral::Property::PROTOTYPE: { 2446 case ObjectLiteral::Property::PROTOTYPE: {
2449 // Duplicate the object as an argument to the runtime call. 2447 // Duplicate the object as an argument to the runtime call.
2450 frame_->Dup(); 2448 frame_->Dup();
2451 Load(property->key()); 2449 Load(property->key());
2452 Load(property->value()); 2450 Load(property->value());
2453 Result ignored = frame_->CallRuntime(Runtime::kSetProperty, 3); 2451 Result ignored = frame_->CallRuntime(Runtime::kSetProperty, 3);
(...skipping 3560 matching lines...) Expand 10 before | Expand all | Expand 10 after
6014 cgen_->StoreToSlot(slot, init_state); 6012 cgen_->StoreToSlot(slot, init_state);
6015 cgen_->UnloadReference(this); 6013 cgen_->UnloadReference(this);
6016 break; 6014 break;
6017 } 6015 }
6018 6016
6019 case NAMED: { 6017 case NAMED: {
6020 Comment cmnt(masm, "[ Store to named Property"); 6018 Comment cmnt(masm, "[ Store to named Property");
6021 cgen_->frame()->Push(GetName()); 6019 cgen_->frame()->Push(GetName());
6022 Result answer = cgen_->frame()->CallStoreIC(); 6020 Result answer = cgen_->frame()->CallStoreIC();
6023 cgen_->frame()->Push(&answer); 6021 cgen_->frame()->Push(&answer);
6024 cgen_->UnloadReference(this); 6022 set_unloaded();
6025 break; 6023 break;
6026 } 6024 }
6027 6025
6028 case KEYED: { 6026 case KEYED: {
6029 Comment cmnt(masm, "[ Store to keyed Property"); 6027 Comment cmnt(masm, "[ Store to keyed Property");
6030 6028
6031 // Generate inlined version of the keyed store if the code is in 6029 // Generate inlined version of the keyed store if the code is in
6032 // a loop and the key is likely to be a smi. 6030 // a loop and the key is likely to be a smi.
6033 Property* property = expression()->AsProperty(); 6031 Property* property = expression()->AsProperty();
6034 ASSERT(property != NULL); 6032 ASSERT(property != NULL);
(...skipping 3172 matching lines...) Expand 10 before | Expand all | Expand 10 after
9207 // Call the function from C++. 9205 // Call the function from C++.
9208 return FUNCTION_CAST<ModuloFunction>(buffer); 9206 return FUNCTION_CAST<ModuloFunction>(buffer);
9209 } 9207 }
9210 9208
9211 #endif 9209 #endif
9212 9210
9213 9211
9214 #undef __ 9212 #undef __
9215 9213
9216 } } // namespace v8::internal 9214 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/ia32/debug-ia32.cc ('k') | src/x64/debug-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698