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

Side by Side Diff: src/runtime.cc

Issue 10690043: Implement proper module linking. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Addressed Michael's comments. Created 8 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 | 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 // 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 8825 matching lines...) Expand 10 before | Expand all | Expand 10 after
8836 MaybeObject* maybe_context = 8836 MaybeObject* maybe_context =
8837 isolate->heap()->AllocateBlockContext(function, 8837 isolate->heap()->AllocateBlockContext(function,
8838 isolate->context(), 8838 isolate->context(),
8839 scope_info); 8839 scope_info);
8840 if (!maybe_context->To(&context)) return maybe_context; 8840 if (!maybe_context->To(&context)) return maybe_context;
8841 isolate->set_context(context); 8841 isolate->set_context(context);
8842 return context; 8842 return context;
8843 } 8843 }
8844 8844
8845 8845
8846 RUNTIME_FUNCTION(MaybeObject*, Runtime_IsJSModule) {
8847 ASSERT(args.length() == 1);
8848 Object* obj = args[0];
8849 return isolate->heap()->ToBoolean(obj->IsJSModule());
8850 }
8851
8852
8846 RUNTIME_FUNCTION(MaybeObject*, Runtime_PushModuleContext) { 8853 RUNTIME_FUNCTION(MaybeObject*, Runtime_PushModuleContext) {
8847 NoHandleAllocation ha; 8854 NoHandleAllocation ha;
8848 ASSERT(args.length() == 2); 8855 ASSERT(args.length() == 1);
8849 CONVERT_ARG_CHECKED(ScopeInfo, scope_info, 0); 8856 CONVERT_ARG_HANDLE_CHECKED(JSModule, instance, 0);
8850 CONVERT_ARG_HANDLE_CHECKED(JSModule, instance, 1);
8851 8857
8852 Context* context; 8858 Context* context = Context::cast(instance->context());
8853 MaybeObject* maybe_context = 8859 Context* previous = isolate->context();
8854 isolate->heap()->AllocateModuleContext(isolate->context(), 8860 ASSERT(context->IsModuleContext());
8855 scope_info); 8861 // Initialize the context links.
8856 if (!maybe_context->To(&context)) return maybe_context; 8862 context->set_previous(previous);
8857 // Also initialize the context slot of the instance object. 8863 context->set_closure(previous->closure());
8858 instance->set_context(context); 8864 context->set_global(previous->global());
8859 isolate->set_context(context); 8865 isolate->set_context(context);
8860 8866
8861 return context; 8867 return context;
8862 } 8868 }
8863 8869
8864 8870
8865 RUNTIME_FUNCTION(MaybeObject*, Runtime_DeleteContextSlot) { 8871 RUNTIME_FUNCTION(MaybeObject*, Runtime_DeleteContextSlot) {
8866 HandleScope scope(isolate); 8872 HandleScope scope(isolate);
8867 ASSERT(args.length() == 2); 8873 ASSERT(args.length() == 2);
8868 8874
(...skipping 4836 matching lines...) Expand 10 before | Expand all | Expand 10 after
13705 // Handle last resort GC and make sure to allow future allocations 13711 // Handle last resort GC and make sure to allow future allocations
13706 // to grow the heap without causing GCs (if possible). 13712 // to grow the heap without causing GCs (if possible).
13707 isolate->counters()->gc_last_resort_from_js()->Increment(); 13713 isolate->counters()->gc_last_resort_from_js()->Increment();
13708 isolate->heap()->CollectAllGarbage(Heap::kNoGCFlags, 13714 isolate->heap()->CollectAllGarbage(Heap::kNoGCFlags,
13709 "Runtime::PerformGC"); 13715 "Runtime::PerformGC");
13710 } 13716 }
13711 } 13717 }
13712 13718
13713 13719
13714 } } // namespace v8::internal 13720 } } // namespace v8::internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698