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

Side by Side Diff: src/d8.cc

Issue 2741683004: [rename] Rename internal field to embedder field. (Closed)
Patch Set: DEPRECATE_SOON(GetInternalField) Created 3 years, 9 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
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 <errno.h> 5 #include <errno.h>
6 #include <stdlib.h> 6 #include <stdlib.h>
7 #include <string.h> 7 #include <string.h>
8 #include <sys/stat.h> 8 #include <sys/stat.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 219
220 220
221 v8::Platform* g_platform = NULL; 221 v8::Platform* g_platform = NULL;
222 222
223 static Local<Value> Throw(Isolate* isolate, const char* message) { 223 static Local<Value> Throw(Isolate* isolate, const char* message) {
224 return isolate->ThrowException( 224 return isolate->ThrowException(
225 String::NewFromUtf8(isolate, message, NewStringType::kNormal) 225 String::NewFromUtf8(isolate, message, NewStringType::kNormal)
226 .ToLocalChecked()); 226 .ToLocalChecked());
227 } 227 }
228 228
229 229 Worker* GetWorkerFromEmbedderField(Isolate* isolate, Local<Object> object) {
230 Worker* GetWorkerFromInternalField(Isolate* isolate, Local<Object> object) { 230 if (object->EmbedderFieldCount() != 1) {
231 if (object->InternalFieldCount() != 1) {
232 Throw(isolate, "this is not a Worker"); 231 Throw(isolate, "this is not a Worker");
233 return NULL; 232 return NULL;
234 } 233 }
235 234
236 Worker* worker = 235 Worker* worker =
237 static_cast<Worker*>(object->GetAlignedPointerFromInternalField(0)); 236 static_cast<Worker*>(object->GetAlignedPointerFromEmbedderField(0));
238 if (worker == NULL) { 237 if (worker == NULL) {
239 Throw(isolate, "Worker is defunct because main thread is terminating"); 238 Throw(isolate, "Worker is defunct because main thread is terminating");
240 return NULL; 239 return NULL;
241 } 240 }
242 241
243 return worker; 242 return worker;
244 } 243 }
245 244
246 245
247 } // namespace 246 } // namespace
(...skipping 892 matching lines...) Expand 10 before | Expand all | Expand 10 after
1140 return; 1139 return;
1141 } 1140 }
1142 1141
1143 { 1142 {
1144 base::LockGuard<base::Mutex> lock_guard(workers_mutex_.Pointer()); 1143 base::LockGuard<base::Mutex> lock_guard(workers_mutex_.Pointer());
1145 if (workers_.length() >= kMaxWorkers) { 1144 if (workers_.length() >= kMaxWorkers) {
1146 Throw(args.GetIsolate(), "Too many workers, I won't let you create more"); 1145 Throw(args.GetIsolate(), "Too many workers, I won't let you create more");
1147 return; 1146 return;
1148 } 1147 }
1149 1148
1150 // Initialize the internal field to NULL; if we return early without 1149 // Initialize the embedder field to NULL; if we return early without
1151 // creating a new Worker (because the main thread is terminating) we can 1150 // creating a new Worker (because the main thread is terminating) we can
1152 // early-out from the instance calls. 1151 // early-out from the instance calls.
1153 args.Holder()->SetAlignedPointerInInternalField(0, NULL); 1152 args.Holder()->SetAlignedPointerInEmbedderField(0, NULL);
1154 1153
1155 if (!allow_new_workers_) return; 1154 if (!allow_new_workers_) return;
1156 1155
1157 Worker* worker = new Worker; 1156 Worker* worker = new Worker;
1158 args.Holder()->SetAlignedPointerInInternalField(0, worker); 1157 args.Holder()->SetAlignedPointerInEmbedderField(0, worker);
1159 workers_.Add(worker); 1158 workers_.Add(worker);
1160 1159
1161 String::Utf8Value script(args[0]); 1160 String::Utf8Value script(args[0]);
1162 if (!*script) { 1161 if (!*script) {
1163 Throw(args.GetIsolate(), "Can't get worker script"); 1162 Throw(args.GetIsolate(), "Can't get worker script");
1164 return; 1163 return;
1165 } 1164 }
1166 worker->StartExecuteInThread(*script); 1165 worker->StartExecuteInThread(*script);
1167 } 1166 }
1168 } 1167 }
1169 1168
1170 1169
1171 void Shell::WorkerPostMessage(const v8::FunctionCallbackInfo<v8::Value>& args) { 1170 void Shell::WorkerPostMessage(const v8::FunctionCallbackInfo<v8::Value>& args) {
1172 Isolate* isolate = args.GetIsolate(); 1171 Isolate* isolate = args.GetIsolate();
1173 HandleScope handle_scope(isolate); 1172 HandleScope handle_scope(isolate);
1174 1173
1175 if (args.Length() < 1) { 1174 if (args.Length() < 1) {
1176 Throw(isolate, "Invalid argument"); 1175 Throw(isolate, "Invalid argument");
1177 return; 1176 return;
1178 } 1177 }
1179 1178
1180 Worker* worker = GetWorkerFromInternalField(isolate, args.Holder()); 1179 Worker* worker = GetWorkerFromEmbedderField(isolate, args.Holder());
1181 if (!worker) { 1180 if (!worker) {
1182 return; 1181 return;
1183 } 1182 }
1184 1183
1185 Local<Value> message = args[0]; 1184 Local<Value> message = args[0];
1186 Local<Value> transfer = 1185 Local<Value> transfer =
1187 args.Length() >= 2 ? args[1] : Local<Value>::Cast(Undefined(isolate)); 1186 args.Length() >= 2 ? args[1] : Local<Value>::Cast(Undefined(isolate));
1188 std::unique_ptr<SerializationData> data = 1187 std::unique_ptr<SerializationData> data =
1189 Shell::SerializeValue(isolate, message, transfer); 1188 Shell::SerializeValue(isolate, message, transfer);
1190 if (data) { 1189 if (data) {
1191 worker->PostMessage(std::move(data)); 1190 worker->PostMessage(std::move(data));
1192 } 1191 }
1193 } 1192 }
1194 1193
1195 1194
1196 void Shell::WorkerGetMessage(const v8::FunctionCallbackInfo<v8::Value>& args) { 1195 void Shell::WorkerGetMessage(const v8::FunctionCallbackInfo<v8::Value>& args) {
1197 Isolate* isolate = args.GetIsolate(); 1196 Isolate* isolate = args.GetIsolate();
1198 HandleScope handle_scope(isolate); 1197 HandleScope handle_scope(isolate);
1199 Worker* worker = GetWorkerFromInternalField(isolate, args.Holder()); 1198 Worker* worker = GetWorkerFromEmbedderField(isolate, args.Holder());
1200 if (!worker) { 1199 if (!worker) {
1201 return; 1200 return;
1202 } 1201 }
1203 1202
1204 std::unique_ptr<SerializationData> data = worker->GetMessage(); 1203 std::unique_ptr<SerializationData> data = worker->GetMessage();
1205 if (data) { 1204 if (data) {
1206 Local<Value> value; 1205 Local<Value> value;
1207 if (Shell::DeserializeValue(isolate, std::move(data)).ToLocal(&value)) { 1206 if (Shell::DeserializeValue(isolate, std::move(data)).ToLocal(&value)) {
1208 args.GetReturnValue().Set(value); 1207 args.GetReturnValue().Set(value);
1209 } 1208 }
1210 } 1209 }
1211 } 1210 }
1212 1211
1213 1212
1214 void Shell::WorkerTerminate(const v8::FunctionCallbackInfo<v8::Value>& args) { 1213 void Shell::WorkerTerminate(const v8::FunctionCallbackInfo<v8::Value>& args) {
1215 Isolate* isolate = args.GetIsolate(); 1214 Isolate* isolate = args.GetIsolate();
1216 HandleScope handle_scope(isolate); 1215 HandleScope handle_scope(isolate);
1217 Worker* worker = GetWorkerFromInternalField(isolate, args.Holder()); 1216 Worker* worker = GetWorkerFromEmbedderField(isolate, args.Holder());
1218 if (!worker) { 1217 if (!worker) {
1219 return; 1218 return;
1220 } 1219 }
1221 1220
1222 worker->Terminate(); 1221 worker->Terminate();
1223 } 1222 }
1224 1223
1225 1224
1226 void Shell::QuitOnce(v8::FunctionCallbackInfo<v8::Value>* args) { 1225 void Shell::QuitOnce(v8::FunctionCallbackInfo<v8::Value>* args) {
1227 int exit_code = (*args)[0] 1226 int exit_code = (*args)[0]
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after
1559 worker_fun_template->PrototypeTemplate()->Set( 1558 worker_fun_template->PrototypeTemplate()->Set(
1560 String::NewFromUtf8(isolate, "postMessage", NewStringType::kNormal) 1559 String::NewFromUtf8(isolate, "postMessage", NewStringType::kNormal)
1561 .ToLocalChecked(), 1560 .ToLocalChecked(),
1562 FunctionTemplate::New(isolate, WorkerPostMessage, Local<Value>(), 1561 FunctionTemplate::New(isolate, WorkerPostMessage, Local<Value>(),
1563 worker_signature)); 1562 worker_signature));
1564 worker_fun_template->PrototypeTemplate()->Set( 1563 worker_fun_template->PrototypeTemplate()->Set(
1565 String::NewFromUtf8(isolate, "getMessage", NewStringType::kNormal) 1564 String::NewFromUtf8(isolate, "getMessage", NewStringType::kNormal)
1566 .ToLocalChecked(), 1565 .ToLocalChecked(),
1567 FunctionTemplate::New(isolate, WorkerGetMessage, Local<Value>(), 1566 FunctionTemplate::New(isolate, WorkerGetMessage, Local<Value>(),
1568 worker_signature)); 1567 worker_signature));
1569 worker_fun_template->InstanceTemplate()->SetInternalFieldCount(1); 1568 worker_fun_template->InstanceTemplate()->SetEmbedderFieldCount(1);
1570 global_template->Set( 1569 global_template->Set(
1571 String::NewFromUtf8(isolate, "Worker", NewStringType::kNormal) 1570 String::NewFromUtf8(isolate, "Worker", NewStringType::kNormal)
1572 .ToLocalChecked(), 1571 .ToLocalChecked(),
1573 worker_fun_template); 1572 worker_fun_template);
1574 1573
1575 Local<ObjectTemplate> os_templ = ObjectTemplate::New(isolate); 1574 Local<ObjectTemplate> os_templ = ObjectTemplate::New(isolate);
1576 AddOSMethods(isolate, os_templ); 1575 AddOSMethods(isolate, os_templ);
1577 global_template->Set( 1576 global_template->Set(
1578 String::NewFromUtf8(isolate, "os", NewStringType::kNormal) 1577 String::NewFromUtf8(isolate, "os", NewStringType::kNormal)
1579 .ToLocalChecked(), 1578 .ToLocalChecked(),
(...skipping 1455 matching lines...) Expand 10 before | Expand all | Expand 10 after
3035 } 3034 }
3036 3035
3037 } // namespace v8 3036 } // namespace v8
3038 3037
3039 3038
3040 #ifndef GOOGLE3 3039 #ifndef GOOGLE3
3041 int main(int argc, char* argv[]) { 3040 int main(int argc, char* argv[]) {
3042 return v8::Shell::Main(argc, argv); 3041 return v8::Shell::Main(argc, argv);
3043 } 3042 }
3044 #endif 3043 #endif
OLDNEW
« include/v8-experimental.h ('K') | « src/crankshaft/hydrogen.cc ('k') | src/debug/debug.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698