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

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

Issue 2412613004: [stubs] Remove unused StoreGlobalViaContextStub. (Closed)
Patch Set: Created 4 years, 2 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') | src/s390/code-stubs-s390.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 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 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 // Conservative upper limit to prevent fuzz tests from going OOM. 270 // Conservative upper limit to prevent fuzz tests from going OOM.
271 if (properties > 100000) return isolate->ThrowIllegalOperation(); 271 if (properties > 100000) return isolate->ThrowIllegalOperation();
272 if (object->HasFastProperties() && !object->IsJSGlobalProxy()) { 272 if (object->HasFastProperties() && !object->IsJSGlobalProxy()) {
273 JSObject::NormalizeProperties(object, KEEP_INOBJECT_PROPERTIES, properties, 273 JSObject::NormalizeProperties(object, KEEP_INOBJECT_PROPERTIES, properties,
274 "OptimizeForAdding"); 274 "OptimizeForAdding");
275 } 275 }
276 return *object; 276 return *object;
277 } 277 }
278 278
279 279
280 namespace {
281
282 Object* StoreGlobalViaContext(Isolate* isolate, int slot, Handle<Object> value,
283 LanguageMode language_mode) {
284 // Go up context chain to the script context.
285 Handle<Context> script_context(isolate->context()->script_context(), isolate);
286 DCHECK(script_context->IsScriptContext());
287 DCHECK(script_context->get(slot)->IsPropertyCell());
288
289 // Lookup the named property on the global object.
290 Handle<ScopeInfo> scope_info(script_context->scope_info(), isolate);
291 Handle<Name> name(scope_info->ContextSlotName(slot), isolate);
292 Handle<JSGlobalObject> global_object(script_context->global_object(),
293 isolate);
294 LookupIterator it(global_object, name, global_object, LookupIterator::OWN);
295
296 // Switch to fast mode only if there is a data property and it's not on
297 // a hidden prototype.
298 if (it.state() == LookupIterator::DATA &&
299 it.GetHolder<Object>().is_identical_to(global_object)) {
300 // Now update cell in the script context.
301 Handle<PropertyCell> cell = it.GetPropertyCell();
302 script_context->set(slot, *cell);
303 } else {
304 // This is not a fast case, so keep this access in a slow mode.
305 // Store empty_property_cell here to release the outdated property cell.
306 script_context->set(slot, isolate->heap()->empty_property_cell());
307 }
308
309 MAYBE_RETURN(Object::SetProperty(&it, value, language_mode,
310 Object::CERTAINLY_NOT_STORE_FROM_KEYED),
311 isolate->heap()->exception());
312 return *value;
313 }
314
315 } // namespace
316
317
318 RUNTIME_FUNCTION(Runtime_StoreGlobalViaContext_Sloppy) {
319 HandleScope scope(isolate);
320 DCHECK_EQ(2, args.length());
321 CONVERT_SMI_ARG_CHECKED(slot, 0);
322 CONVERT_ARG_HANDLE_CHECKED(Object, value, 1);
323
324 return StoreGlobalViaContext(isolate, slot, value, SLOPPY);
325 }
326
327
328 RUNTIME_FUNCTION(Runtime_StoreGlobalViaContext_Strict) {
329 HandleScope scope(isolate);
330 DCHECK_EQ(2, args.length());
331 CONVERT_SMI_ARG_CHECKED(slot, 0);
332 CONVERT_ARG_HANDLE_CHECKED(Object, value, 1);
333
334 return StoreGlobalViaContext(isolate, slot, value, STRICT);
335 }
336
337
338 RUNTIME_FUNCTION(Runtime_GetProperty) { 280 RUNTIME_FUNCTION(Runtime_GetProperty) {
339 HandleScope scope(isolate); 281 HandleScope scope(isolate);
340 DCHECK(args.length() == 2); 282 DCHECK(args.length() == 2);
341 283
342 CONVERT_ARG_HANDLE_CHECKED(Object, object, 0); 284 CONVERT_ARG_HANDLE_CHECKED(Object, object, 0);
343 CONVERT_ARG_HANDLE_CHECKED(Object, key, 1); 285 CONVERT_ARG_HANDLE_CHECKED(Object, key, 1);
344 286
345 RETURN_RESULT_OR_FAILURE(isolate, 287 RETURN_RESULT_OR_FAILURE(isolate,
346 Runtime::GetObjectProperty(isolate, object, key)); 288 Runtime::GetObjectProperty(isolate, object, key));
347 } 289 }
(...skipping 642 matching lines...) Expand 10 before | Expand all | Expand 10 after
990 DCHECK(args.length() == 2); 932 DCHECK(args.length() == 2);
991 CONVERT_ARG_HANDLE_CHECKED(String, name, 0); 933 CONVERT_ARG_HANDLE_CHECKED(String, name, 0);
992 CONVERT_ARG_HANDLE_CHECKED(Object, value, 1); 934 CONVERT_ARG_HANDLE_CHECKED(Object, value, 1);
993 Handle<Module> module(isolate->context()->module()); 935 Handle<Module> module(isolate->context()->module());
994 Module::StoreExport(module, name, value); 936 Module::StoreExport(module, name, value);
995 return isolate->heap()->undefined_value(); 937 return isolate->heap()->undefined_value();
996 } 938 }
997 939
998 } // namespace internal 940 } // namespace internal
999 } // namespace v8 941 } // namespace v8
OLDNEW
« no previous file with comments | « src/runtime/runtime.h ('k') | src/s390/code-stubs-s390.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698