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

Side by Side Diff: src/ic.cc

Issue 480823004: Get rid of GetLazyValue and clients. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 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 | « src/hydrogen.cc ('k') | src/objects.h » ('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 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/accessors.h" 7 #include "src/accessors.h"
8 #include "src/api.h" 8 #include "src/api.h"
9 #include "src/arguments.h" 9 #include "src/arguments.h"
10 #include "src/codegen.h" 10 #include "src/codegen.h"
(...skipping 1539 matching lines...) Expand 10 before | Expand all | Expand 10 after
1550 StoreGlobalStub stub( 1550 StoreGlobalStub stub(
1551 isolate(), union_type->IsConstant(), receiver->IsJSGlobalProxy()); 1551 isolate(), union_type->IsConstant(), receiver->IsJSGlobalProxy());
1552 Handle<Code> code = stub.GetCodeCopyFromTemplate(global, cell); 1552 Handle<Code> code = stub.GetCodeCopyFromTemplate(global, cell);
1553 // TODO(verwaest): Move caching of these NORMAL stubs outside as well. 1553 // TODO(verwaest): Move caching of these NORMAL stubs outside as well.
1554 HeapObject::UpdateMapCodeCache(receiver, name, code); 1554 HeapObject::UpdateMapCodeCache(receiver, name, code);
1555 return code; 1555 return code;
1556 } 1556 }
1557 DCHECK(holder.is_identical_to(receiver)); 1557 DCHECK(holder.is_identical_to(receiver));
1558 return isolate()->builtins()->StoreIC_Normal(); 1558 return isolate()->builtins()->StoreIC_Normal();
1559 case CALLBACKS: { 1559 case CALLBACKS: {
1560 Handle<Object> callback(lookup->GetCallbackObject(), isolate()); 1560 if (!holder->HasFastProperties()) break;
1561 Handle<Object> callback(lookup->GetValueFromMap(holder->map()),
1562 isolate());
1561 if (callback->IsExecutableAccessorInfo()) { 1563 if (callback->IsExecutableAccessorInfo()) {
1562 Handle<ExecutableAccessorInfo> info = 1564 Handle<ExecutableAccessorInfo> info =
1563 Handle<ExecutableAccessorInfo>::cast(callback); 1565 Handle<ExecutableAccessorInfo>::cast(callback);
1564 if (v8::ToCData<Address>(info->setter()) == 0) break; 1566 if (v8::ToCData<Address>(info->setter()) == 0) break;
1565 if (!holder->HasFastProperties()) break;
1566 if (!ExecutableAccessorInfo::IsCompatibleReceiverType( 1567 if (!ExecutableAccessorInfo::IsCompatibleReceiverType(
1567 isolate(), info, receiver_type())) { 1568 isolate(), info, receiver_type())) {
1568 break; 1569 break;
1569 } 1570 }
1570 NamedStoreHandlerCompiler compiler(isolate(), receiver_type(), 1571 NamedStoreHandlerCompiler compiler(isolate(), receiver_type(),
1571 holder); 1572 holder);
1572 return compiler.CompileStoreCallback(receiver, name, info); 1573 return compiler.CompileStoreCallback(receiver, name, info);
1573 } else if (callback->IsAccessorPair()) { 1574 } else if (callback->IsAccessorPair()) {
1574 Handle<Object> setter( 1575 Handle<Object> setter(
1575 Handle<AccessorPair>::cast(callback)->setter(), isolate()); 1576 Handle<AccessorPair>::cast(callback)->setter(), isolate());
1576 if (!setter->IsJSFunction()) break; 1577 if (!setter->IsJSFunction()) break;
1577 if (holder->IsGlobalObject()) break;
1578 if (!holder->HasFastProperties()) break;
1579 Handle<JSFunction> function = Handle<JSFunction>::cast(setter); 1578 Handle<JSFunction> function = Handle<JSFunction>::cast(setter);
1580 CallOptimization call_optimization(function); 1579 CallOptimization call_optimization(function);
1581 NamedStoreHandlerCompiler compiler(isolate(), receiver_type(), 1580 NamedStoreHandlerCompiler compiler(isolate(), receiver_type(),
1582 holder); 1581 holder);
1583 if (call_optimization.is_simple_api_call() && 1582 if (call_optimization.is_simple_api_call() &&
1584 call_optimization.IsCompatibleReceiver(receiver, holder)) { 1583 call_optimization.IsCompatibleReceiver(receiver, holder)) {
1585 return compiler.CompileStoreCallback(receiver, name, 1584 return compiler.CompileStoreCallback(receiver, name,
1586 call_optimization); 1585 call_optimization);
1587 } 1586 }
1588 return compiler.CompileStoreViaSetter( 1587 return compiler.CompileStoreViaSetter(
(...skipping 1586 matching lines...) Expand 10 before | Expand all | Expand 10 after
3175 #undef ADDR 3174 #undef ADDR
3176 }; 3175 };
3177 3176
3178 3177
3179 Address IC::AddressFromUtilityId(IC::UtilityId id) { 3178 Address IC::AddressFromUtilityId(IC::UtilityId id) {
3180 return IC_utilities[id]; 3179 return IC_utilities[id];
3181 } 3180 }
3182 3181
3183 3182
3184 } } // namespace v8::internal 3183 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/hydrogen.cc ('k') | src/objects.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698