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

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

Issue 459413002: Support symbol-named properties in API (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Include a bit that was missing from the previous patch 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
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/api.h" 7 #include "src/api.h"
8 #include "src/arguments.h" 8 #include "src/arguments.h"
9 #include "src/ast.h" 9 #include "src/ast.h"
10 #include "src/code-stubs.h" 10 #include "src/code-stubs.h"
(...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after
496 Handle<JSObject> receiver = args.at<JSObject>(0); 496 Handle<JSObject> receiver = args.at<JSObject>(0);
497 Handle<JSObject> holder = args.at<JSObject>(1); 497 Handle<JSObject> holder = args.at<JSObject>(1);
498 Handle<ExecutableAccessorInfo> callback = args.at<ExecutableAccessorInfo>(2); 498 Handle<ExecutableAccessorInfo> callback = args.at<ExecutableAccessorInfo>(2);
499 Handle<Name> name = args.at<Name>(3); 499 Handle<Name> name = args.at<Name>(3);
500 Handle<Object> value = args.at<Object>(4); 500 Handle<Object> value = args.at<Object>(4);
501 HandleScope scope(isolate); 501 HandleScope scope(isolate);
502 502
503 DCHECK(callback->IsCompatibleReceiver(*receiver)); 503 DCHECK(callback->IsCompatibleReceiver(*receiver));
504 504
505 Address setter_address = v8::ToCData<Address>(callback->setter()); 505 Address setter_address = v8::ToCData<Address>(callback->setter());
506 v8::AccessorSetterCallback fun = 506 v8::AccessorNameSetterCallback fun =
507 FUNCTION_CAST<v8::AccessorSetterCallback>(setter_address); 507 FUNCTION_CAST<v8::AccessorNameSetterCallback>(setter_address);
508 DCHECK(fun != NULL); 508 DCHECK(fun != NULL);
509 509
510 // TODO(rossberg): Support symbols in the API.
511 if (name->IsSymbol()) return *value;
512 Handle<String> str = Handle<String>::cast(name);
513
514 LOG(isolate, ApiNamedPropertyAccess("store", *receiver, *name)); 510 LOG(isolate, ApiNamedPropertyAccess("store", *receiver, *name));
515 PropertyCallbackArguments custom_args(isolate, callback->data(), *receiver, 511 PropertyCallbackArguments custom_args(isolate, callback->data(), *receiver,
516 *holder); 512 *holder);
517 custom_args.Call(fun, v8::Utils::ToLocal(str), v8::Utils::ToLocal(value)); 513 custom_args.Call(fun, v8::Utils::ToLocal(name), v8::Utils::ToLocal(value));
518 RETURN_FAILURE_IF_SCHEDULED_EXCEPTION(isolate); 514 RETURN_FAILURE_IF_SCHEDULED_EXCEPTION(isolate);
519 return *value; 515 return *value;
520 } 516 }
521 517
522 518
523 /** 519 /**
524 * Attempts to load a property with an interceptor (which must be present), 520 * Attempts to load a property with an interceptor (which must be present),
525 * but doesn't search the prototype chain. 521 * but doesn't search the prototype chain.
526 * 522 *
527 * Returns |Heap::no_interceptor_result_sentinel()| if interceptor doesn't 523 * Returns |Heap::no_interceptor_result_sentinel()| if interceptor doesn't
(...skipping 756 matching lines...) Expand 10 before | Expand all | Expand 10 after
1284 Handle<FunctionTemplateInfo>( 1280 Handle<FunctionTemplateInfo>(
1285 FunctionTemplateInfo::cast(signature->receiver())); 1281 FunctionTemplateInfo::cast(signature->receiver()));
1286 } 1282 }
1287 } 1283 }
1288 1284
1289 is_simple_api_call_ = true; 1285 is_simple_api_call_ = true;
1290 } 1286 }
1291 1287
1292 1288
1293 } } // namespace v8::internal 1289 } } // namespace v8::internal
OLDNEW
« src/api.cc ('K') | « src/objects.cc ('k') | test/cctest/test-alloc.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698