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

Side by Side Diff: src/hydrogen.cc

Issue 10826139: Merged r12252 into trunk branch. (Closed) Base URL: https://v8.googlecode.com/svn/trunk
Patch Set: Created 8 years, 4 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 | « no previous file | src/version.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 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 5404 matching lines...) Expand 10 before | Expand all | Expand 10 after
5415 PushAndAdd(instr); 5415 PushAndAdd(instr);
5416 if (instr->HasObservableSideEffects()) AddSimulate(operation->id()); 5416 if (instr->HasObservableSideEffects()) AddSimulate(operation->id());
5417 5417
5418 HInstruction* store; 5418 HInstruction* store;
5419 if (map.is_null()) { 5419 if (map.is_null()) {
5420 // If we don't know the monomorphic type, do a generic store. 5420 // If we don't know the monomorphic type, do a generic store.
5421 CHECK_ALIVE(store = BuildStoreNamedGeneric(object, name, instr)); 5421 CHECK_ALIVE(store = BuildStoreNamedGeneric(object, name, instr));
5422 } else { 5422 } else {
5423 Handle<AccessorPair> accessors; 5423 Handle<AccessorPair> accessors;
5424 Handle<JSObject> holder; 5424 Handle<JSObject> holder;
5425 if (LookupAccessorPair(map, name, &accessors, &holder)) { 5425 // Because we re-use the load type feedback, there might be no setter.
5426 if (LookupAccessorPair(map, name, &accessors, &holder) &&
5427 accessors->setter()->IsJSFunction()) {
5426 store = BuildCallSetter(object, instr, map, accessors, holder); 5428 store = BuildCallSetter(object, instr, map, accessors, holder);
5427 } else { 5429 } else {
5428 CHECK_ALIVE(store = BuildStoreNamedMonomorphic(object, 5430 CHECK_ALIVE(store = BuildStoreNamedMonomorphic(object,
5429 name, 5431 name,
5430 instr, 5432 instr,
5431 map)); 5433 map));
5432 } 5434 }
5433 } 5435 }
5434 AddInstruction(store); 5436 AddInstruction(store);
5435 // Drop the simulated receiver and value. Return the value. 5437 // Drop the simulated receiver and value. Return the value.
(...skipping 2440 matching lines...) Expand 10 before | Expand all | Expand 10 after
7876 after = BuildIncrement(returns_original_input, expr); 7878 after = BuildIncrement(returns_original_input, expr);
7877 input = Pop(); 7879 input = Pop();
7878 7880
7879 HInstruction* store; 7881 HInstruction* store;
7880 if (map.is_null()) { 7882 if (map.is_null()) {
7881 // If we don't know the monomorphic type, do a generic store. 7883 // If we don't know the monomorphic type, do a generic store.
7882 CHECK_ALIVE(store = BuildStoreNamedGeneric(object, name, after)); 7884 CHECK_ALIVE(store = BuildStoreNamedGeneric(object, name, after));
7883 } else { 7885 } else {
7884 Handle<AccessorPair> accessors; 7886 Handle<AccessorPair> accessors;
7885 Handle<JSObject> holder; 7887 Handle<JSObject> holder;
7886 if (LookupAccessorPair(map, name, &accessors, &holder)) { 7888 // Because we re-use the load type feedback, there might be no setter.
7889 if (LookupAccessorPair(map, name, &accessors, &holder) &&
7890 accessors->setter()->IsJSFunction()) {
7887 store = BuildCallSetter(object, after, map, accessors, holder); 7891 store = BuildCallSetter(object, after, map, accessors, holder);
7888 } else { 7892 } else {
7889 CHECK_ALIVE(store = BuildStoreNamedMonomorphic(object, 7893 CHECK_ALIVE(store = BuildStoreNamedMonomorphic(object,
7890 name, 7894 name,
7891 after, 7895 after,
7892 map)); 7896 map));
7893 } 7897 }
7894 } 7898 }
7895 AddInstruction(store); 7899 AddInstruction(store);
7896 7900
(...skipping 1763 matching lines...) Expand 10 before | Expand all | Expand 10 after
9660 } 9664 }
9661 } 9665 }
9662 9666
9663 #ifdef DEBUG 9667 #ifdef DEBUG
9664 if (graph_ != NULL) graph_->Verify(false); // No full verify. 9668 if (graph_ != NULL) graph_->Verify(false); // No full verify.
9665 if (allocator_ != NULL) allocator_->Verify(); 9669 if (allocator_ != NULL) allocator_->Verify();
9666 #endif 9670 #endif
9667 } 9671 }
9668 9672
9669 } } // namespace v8::internal 9673 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « no previous file | src/version.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698