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

Side by Side Diff: src/runtime/runtime-object.cc

Issue 2144643004: [builtins] Turn StoreIC_Miss and StoreIC_Slow builtins to TurboFan code stubs. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 5 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
« no previous file with comments | « src/runtime/runtime.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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/runtime/runtime-utils.h" 5 #include "src/runtime/runtime-utils.h"
6 6
7 #include "src/arguments.h" 7 #include "src/arguments.h"
8 #include "src/bootstrapper.h" 8 #include "src/bootstrapper.h"
9 #include "src/debug/debug.h" 9 #include "src/debug/debug.h"
10 #include "src/isolate-inl.h" 10 #include "src/isolate-inl.h"
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 HandleScope scope(isolate); 341 HandleScope scope(isolate);
342 DCHECK(args.length() == 2); 342 DCHECK(args.length() == 2);
343 343
344 CONVERT_ARG_HANDLE_CHECKED(Object, object, 0); 344 CONVERT_ARG_HANDLE_CHECKED(Object, object, 0);
345 CONVERT_ARG_HANDLE_CHECKED(Object, key, 1); 345 CONVERT_ARG_HANDLE_CHECKED(Object, key, 1);
346 346
347 RETURN_RESULT_OR_FAILURE(isolate, 347 RETURN_RESULT_OR_FAILURE(isolate,
348 Runtime::GetObjectProperty(isolate, object, key)); 348 Runtime::GetObjectProperty(isolate, object, key));
349 } 349 }
350 350
351 namespace { 351 RUNTIME_FUNCTION(Runtime_GetGlobal) {
352 HandleScope scope(isolate);
353 DCHECK_EQ(3, args.length());
354 CONVERT_SMI_ARG_CHECKED(slot, 0);
355 CONVERT_ARG_HANDLE_CHECKED(TypeFeedbackVector, vector, 1);
356 CONVERT_SMI_ARG_CHECKED(typeof_mode_value, 2);
357 TypeofMode typeof_mode = static_cast<TypeofMode>(typeof_mode_value);
358 bool should_throw_reference_error = typeof_mode == NOT_INSIDE_TYPEOF;
352 359
353 Object* GetGlobal(Isolate* isolate, int slot, Handle<TypeFeedbackVector> vector,
354 bool should_throw_reference_error) {
355 FeedbackVectorSlot vector_slot = vector->ToSlot(slot); 360 FeedbackVectorSlot vector_slot = vector->ToSlot(slot);
356 DCHECK_EQ(FeedbackVectorSlotKind::LOAD_GLOBAL_IC, 361 DCHECK_EQ(FeedbackVectorSlotKind::LOAD_GLOBAL_IC,
357 vector->GetKind(vector_slot)); 362 vector->GetKind(vector_slot));
358 Handle<String> name(vector->GetName(vector_slot), isolate); 363 Handle<String> name(vector->GetName(vector_slot), isolate);
359 DCHECK_NE(*name, *isolate->factory()->empty_string()); 364 DCHECK_NE(*name, *isolate->factory()->empty_string());
360 365
361 Handle<JSGlobalObject> global = isolate->global_object(); 366 Handle<JSGlobalObject> global = isolate->global_object();
362 367
363 Handle<ScriptContextTable> script_contexts( 368 Handle<ScriptContextTable> script_contexts(
364 global->native_context()->script_context_table()); 369 global->native_context()->script_context_table());
(...skipping 12 matching lines...) Expand all
377 } 382 }
378 383
379 Handle<Object> result; 384 Handle<Object> result;
380 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( 385 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
381 isolate, result, 386 isolate, result,
382 Runtime::GetObjectProperty(isolate, global, name, 387 Runtime::GetObjectProperty(isolate, global, name,
383 should_throw_reference_error)); 388 should_throw_reference_error));
384 return *result; 389 return *result;
385 } 390 }
386 391
387 } // namespace
388
389 RUNTIME_FUNCTION(Runtime_GetGlobalInsideTypeof) {
390 HandleScope scope(isolate);
391 DCHECK_EQ(2, args.length());
392 CONVERT_SMI_ARG_CHECKED(slot, 0);
393 CONVERT_ARG_HANDLE_CHECKED(TypeFeedbackVector, vector, 1);
394 return GetGlobal(isolate, slot, vector, false);
395 }
396
397 RUNTIME_FUNCTION(Runtime_GetGlobalNotInsideTypeof) {
398 HandleScope scope(isolate);
399 DCHECK_EQ(2, args.length());
400 CONVERT_SMI_ARG_CHECKED(slot, 0);
401 CONVERT_ARG_HANDLE_CHECKED(TypeFeedbackVector, vector, 1);
402 return GetGlobal(isolate, slot, vector, true);
403 }
404
405 // KeyedGetProperty is called from KeyedLoadIC::GenerateGeneric. 392 // KeyedGetProperty is called from KeyedLoadIC::GenerateGeneric.
406 RUNTIME_FUNCTION(Runtime_KeyedGetProperty) { 393 RUNTIME_FUNCTION(Runtime_KeyedGetProperty) {
407 HandleScope scope(isolate); 394 HandleScope scope(isolate);
408 DCHECK(args.length() == 2); 395 DCHECK(args.length() == 2);
409 396
410 CONVERT_ARG_HANDLE_CHECKED(Object, receiver_obj, 0); 397 CONVERT_ARG_HANDLE_CHECKED(Object, receiver_obj, 0);
411 CONVERT_ARG_HANDLE_CHECKED(Object, key_obj, 1); 398 CONVERT_ARG_HANDLE_CHECKED(Object, key_obj, 1);
412 399
413 RETURN_RESULT_OR_FAILURE( 400 RETURN_RESULT_OR_FAILURE(
414 isolate, KeyedGetObjectProperty(isolate, receiver_obj, key_obj)); 401 isolate, KeyedGetObjectProperty(isolate, receiver_obj, key_obj));
415 } 402 }
416 403
417
418 RUNTIME_FUNCTION(Runtime_AddNamedProperty) { 404 RUNTIME_FUNCTION(Runtime_AddNamedProperty) {
419 HandleScope scope(isolate); 405 HandleScope scope(isolate);
420 DCHECK_EQ(4, args.length()); 406 DCHECK_EQ(4, args.length());
421 407
422 CONVERT_ARG_HANDLE_CHECKED(JSObject, object, 0); 408 CONVERT_ARG_HANDLE_CHECKED(JSObject, object, 0);
423 CONVERT_ARG_HANDLE_CHECKED(Name, name, 1); 409 CONVERT_ARG_HANDLE_CHECKED(Name, name, 1);
424 CONVERT_ARG_HANDLE_CHECKED(Object, value, 2); 410 CONVERT_ARG_HANDLE_CHECKED(Object, value, 2);
425 CONVERT_PROPERTY_ATTRIBUTES_CHECKED(attrs, 3); 411 CONVERT_PROPERTY_ATTRIBUTES_CHECKED(attrs, 3);
426 412
427 #ifdef DEBUG 413 #ifdef DEBUG
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 } 472 }
487 473
488 474
489 RUNTIME_FUNCTION(Runtime_SetProperty) { 475 RUNTIME_FUNCTION(Runtime_SetProperty) {
490 HandleScope scope(isolate); 476 HandleScope scope(isolate);
491 DCHECK_EQ(4, args.length()); 477 DCHECK_EQ(4, args.length());
492 478
493 CONVERT_ARG_HANDLE_CHECKED(Object, object, 0); 479 CONVERT_ARG_HANDLE_CHECKED(Object, object, 0);
494 CONVERT_ARG_HANDLE_CHECKED(Object, key, 1); 480 CONVERT_ARG_HANDLE_CHECKED(Object, key, 1);
495 CONVERT_ARG_HANDLE_CHECKED(Object, value, 2); 481 CONVERT_ARG_HANDLE_CHECKED(Object, value, 2);
496 CONVERT_LANGUAGE_MODE_ARG_CHECKED(language_mode_arg, 3); 482 CONVERT_LANGUAGE_MODE_ARG_CHECKED(language_mode, 3);
497 LanguageMode language_mode = language_mode_arg;
498 483
499 RETURN_RESULT_OR_FAILURE( 484 RETURN_RESULT_OR_FAILURE(
500 isolate, 485 isolate,
501 Runtime::SetObjectProperty(isolate, object, key, value, language_mode)); 486 Runtime::SetObjectProperty(isolate, object, key, value, language_mode));
502 } 487 }
503 488
504 489
505 namespace { 490 namespace {
506 491
507 // ES6 section 12.5.4. 492 // ES6 section 12.5.4.
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after
981 isolate, o, key, &success, LookupIterator::OWN); 966 isolate, o, key, &success, LookupIterator::OWN);
982 if (!success) return isolate->heap()->exception(); 967 if (!success) return isolate->heap()->exception();
983 MAYBE_RETURN( 968 MAYBE_RETURN(
984 JSReceiver::CreateDataProperty(&it, value, Object::THROW_ON_ERROR), 969 JSReceiver::CreateDataProperty(&it, value, Object::THROW_ON_ERROR),
985 isolate->heap()->exception()); 970 isolate->heap()->exception());
986 return *value; 971 return *value;
987 } 972 }
988 973
989 } // namespace internal 974 } // namespace internal
990 } // namespace v8 975 } // namespace v8
OLDNEW
« no previous file with comments | « src/runtime/runtime.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698