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

Side by Side Diff: src/api.cc

Issue 1155893003: Add {Map,Set}::FromArray to the API (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Rebased Created 5 years, 7 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 | « include/v8.h ('k') | src/bootstrapper.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 // 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/api.h" 5 #include "src/api.h"
6 6
7 #include <string.h> // For memcpy, strlen. 7 #include <string.h> // For memcpy, strlen.
8 #ifdef V8_USE_ADDRESS_SANITIZER 8 #ifdef V8_USE_ADDRESS_SANITIZER
9 #include <sanitizer/asan_interface.h> 9 #include <sanitizer/asan_interface.h>
10 #endif // V8_USE_ADDRESS_SANITIZER 10 #endif // V8_USE_ADDRESS_SANITIZER
(...skipping 6138 matching lines...) Expand 10 before | Expand all | Expand 10 after
6149 i::Handle<i::JSArray> entry_array = 6149 i::Handle<i::JSArray> entry_array =
6150 factory->NewJSArrayWithElements(entry, i::FAST_ELEMENTS, 2); 6150 factory->NewJSArrayWithElements(entry, i::FAST_ELEMENTS, 2);
6151 result->set(i, *entry_array); 6151 result->set(i, *entry_array);
6152 } 6152 }
6153 i::Handle<i::JSArray> result_array = 6153 i::Handle<i::JSArray> result_array =
6154 factory->NewJSArrayWithElements(result, i::FAST_ELEMENTS, length); 6154 factory->NewJSArrayWithElements(result, i::FAST_ELEMENTS, length);
6155 return Utils::ToLocal(result_array); 6155 return Utils::ToLocal(result_array);
6156 } 6156 }
6157 6157
6158 6158
6159 MaybeLocal<Map> Map::FromArray(Local<Context> context, Local<Array> array) {
6160 PREPARE_FOR_EXECUTION(context, "Map::FromArray", Map);
6161 i::Handle<i::Object> result;
6162 i::Handle<i::Object> argv[] = {Utils::OpenHandle(*array)};
6163 has_pending_exception =
6164 !i::Execution::Call(isolate, isolate->map_from_array(),
6165 isolate->factory()->undefined_value(),
6166 arraysize(argv), argv, false).ToHandle(&result);
6167 RETURN_ON_FAILED_EXECUTION(Map);
6168 RETURN_ESCAPED(Local<Map>::Cast(Utils::ToLocal(result)));
6169 }
6170
6171
6159 Local<v8::Set> v8::Set::New(Isolate* isolate) { 6172 Local<v8::Set> v8::Set::New(Isolate* isolate) {
6160 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); 6173 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
6161 LOG_API(i_isolate, "Set::New"); 6174 LOG_API(i_isolate, "Set::New");
6162 ENTER_V8(i_isolate); 6175 ENTER_V8(i_isolate);
6163 i::Handle<i::JSSet> obj = i_isolate->factory()->NewJSSet(); 6176 i::Handle<i::JSSet> obj = i_isolate->factory()->NewJSSet();
6164 return Utils::ToLocal(obj); 6177 return Utils::ToLocal(obj);
6165 } 6178 }
6166 6179
6167 6180
6168 size_t v8::Set::Size() const { 6181 size_t v8::Set::Size() const {
(...skipping 16 matching lines...) Expand all
6185 if (!key->IsTheHole()) { 6198 if (!key->IsTheHole()) {
6186 result->set(i, key); 6199 result->set(i, key);
6187 } 6200 }
6188 } 6201 }
6189 i::Handle<i::JSArray> result_array = 6202 i::Handle<i::JSArray> result_array =
6190 factory->NewJSArrayWithElements(result, i::FAST_ELEMENTS, length); 6203 factory->NewJSArrayWithElements(result, i::FAST_ELEMENTS, length);
6191 return Utils::ToLocal(result_array); 6204 return Utils::ToLocal(result_array);
6192 } 6205 }
6193 6206
6194 6207
6208 MaybeLocal<Set> Set::FromArray(Local<Context> context, Local<Array> array) {
6209 PREPARE_FOR_EXECUTION(context, "Set::FromArray", Set);
6210 i::Handle<i::Object> result;
6211 i::Handle<i::Object> argv[] = {Utils::OpenHandle(*array)};
6212 has_pending_exception =
6213 !i::Execution::Call(isolate, isolate->set_from_array(),
6214 isolate->factory()->undefined_value(),
6215 arraysize(argv), argv, false).ToHandle(&result);
6216 RETURN_ON_FAILED_EXECUTION(Set);
6217 RETURN_ESCAPED(Local<Set>::Cast(Utils::ToLocal(result)));
6218 }
6219
6220
6195 bool Value::IsPromise() const { 6221 bool Value::IsPromise() const {
6196 auto self = Utils::OpenHandle(this); 6222 auto self = Utils::OpenHandle(this);
6197 return i::Object::IsPromise(self); 6223 return i::Object::IsPromise(self);
6198 } 6224 }
6199 6225
6200 6226
6201 MaybeLocal<Promise::Resolver> Promise::Resolver::New(Local<Context> context) { 6227 MaybeLocal<Promise::Resolver> Promise::Resolver::New(Local<Context> context) {
6202 PREPARE_FOR_EXECUTION(context, "Promise::Resolver::New", Resolver); 6228 PREPARE_FOR_EXECUTION(context, "Promise::Resolver::New", Resolver);
6203 i::Handle<i::Object> result; 6229 i::Handle<i::Object> result;
6204 has_pending_exception = !i::Execution::Call( 6230 has_pending_exception = !i::Execution::Call(
(...skipping 1994 matching lines...) Expand 10 before | Expand all | Expand 10 after
8199 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); 8225 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate());
8200 Address callback_address = 8226 Address callback_address =
8201 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); 8227 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback));
8202 VMState<EXTERNAL> state(isolate); 8228 VMState<EXTERNAL> state(isolate);
8203 ExternalCallbackScope call_scope(isolate, callback_address); 8229 ExternalCallbackScope call_scope(isolate, callback_address);
8204 callback(info); 8230 callback(info);
8205 } 8231 }
8206 8232
8207 8233
8208 } } // namespace v8::internal 8234 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « include/v8.h ('k') | src/bootstrapper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698