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

Side by Side Diff: samples/process.cc

Issue 15837007: remove use of context scope with persistent argument (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 6 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 | « samples/lineprocessor.cc ('k') | src/d8.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 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 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 // Create a template for the global object where we set the 161 // Create a template for the global object where we set the
162 // built-in global functions. 162 // built-in global functions.
163 Handle<ObjectTemplate> global = ObjectTemplate::New(); 163 Handle<ObjectTemplate> global = ObjectTemplate::New();
164 global->Set(String::New("log"), FunctionTemplate::New(LogCallback)); 164 global->Set(String::New("log"), FunctionTemplate::New(LogCallback));
165 165
166 // Each processor gets its own context so different processors don't 166 // Each processor gets its own context so different processors don't
167 // affect each other. Context::New returns a persistent handle which 167 // affect each other. Context::New returns a persistent handle which
168 // is what we need for the reference to remain after we return from 168 // is what we need for the reference to remain after we return from
169 // this method. That persistent handle has to be disposed in the 169 // this method. That persistent handle has to be disposed in the
170 // destructor. 170 // destructor.
171 context_.Reset(GetIsolate(), Context::New(GetIsolate(), NULL, global)); 171 v8::Handle<v8::Context> context = Context::New(GetIsolate(), NULL, global);
172 context_.Reset(GetIsolate(), context);
172 173
173 // Enter the new context so all the following operations take place 174 // Enter the new context so all the following operations take place
174 // within it. 175 // within it.
175 Context::Scope context_scope(GetIsolate(), context_); 176 Context::Scope context_scope(context);
176 177
177 // Make the options mapping available within the context 178 // Make the options mapping available within the context
178 if (!InstallMaps(opts, output)) 179 if (!InstallMaps(opts, output))
179 return false; 180 return false;
180 181
181 // Compile and run the script 182 // Compile and run the script
182 if (!ExecuteScript(script_)) 183 if (!ExecuteScript(script_))
183 return false; 184 return false;
184 185
185 // The script compiled and ran correctly. Now we fetch out the 186 // The script compiled and ran correctly. Now we fetch out the
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 context_->Global()->Set(String::New("output"), output_obj); 247 context_->Global()->Set(String::New("output"), output_obj);
247 248
248 return true; 249 return true;
249 } 250 }
250 251
251 252
252 bool JsHttpRequestProcessor::Process(HttpRequest* request) { 253 bool JsHttpRequestProcessor::Process(HttpRequest* request) {
253 // Create a handle scope to keep the temporary object references. 254 // Create a handle scope to keep the temporary object references.
254 HandleScope handle_scope(GetIsolate()); 255 HandleScope handle_scope(GetIsolate());
255 256
257 v8::Local<v8::Context> context =
258 v8::Local<v8::Context>::New(GetIsolate(), context_);
259
256 // Enter this processor's context so all the remaining operations 260 // Enter this processor's context so all the remaining operations
257 // take place there 261 // take place there
258 Context::Scope context_scope(GetIsolate(), context_); 262 Context::Scope context_scope(context);
259 263
260 // Wrap the C++ request object in a JavaScript wrapper 264 // Wrap the C++ request object in a JavaScript wrapper
261 Handle<Object> request_obj = WrapRequest(request); 265 Handle<Object> request_obj = WrapRequest(request);
262 266
263 // Set up an exception handler before calling the Process function 267 // Set up an exception handler before calling the Process function
264 TryCatch try_catch; 268 TryCatch try_catch;
265 269
266 // Invoke the process function, giving the global object as 'this' 270 // Invoke the process function, giving the global object as 'this'
267 // and one argument, the request. 271 // and one argument, the request.
268 const int argc = 1; 272 const int argc = 1;
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after
629 JsHttpRequestProcessor processor(isolate, source); 633 JsHttpRequestProcessor processor(isolate, source);
630 map<string, string> output; 634 map<string, string> output;
631 if (!processor.Initialize(&options, &output)) { 635 if (!processor.Initialize(&options, &output)) {
632 fprintf(stderr, "Error initializing processor.\n"); 636 fprintf(stderr, "Error initializing processor.\n");
633 return 1; 637 return 1;
634 } 638 }
635 if (!ProcessEntries(&processor, kSampleSize, kSampleRequests)) 639 if (!ProcessEntries(&processor, kSampleSize, kSampleRequests))
636 return 1; 640 return 1;
637 PrintMap(&output); 641 PrintMap(&output);
638 } 642 }
OLDNEW
« no previous file with comments | « samples/lineprocessor.cc ('k') | src/d8.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698