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

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

Issue 618123005: Revert "Use symbols instead of hidden properties for i18n markers." (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 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 | Annotate | Revision Log
« no previous file with comments | « src/runtime/runtime.cc ('k') | test/mjsunit/test-hidden-string.js » ('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 5
6 #ifdef V8_I18N_SUPPORT 6 #ifdef V8_I18N_SUPPORT
7 #include "src/v8.h" 7 #include "src/v8.h"
8 8
9 #include "src/arguments.h" 9 #include "src/arguments.h"
10 #include "src/i18n.h" 10 #include "src/i18n.h"
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 RUNTIME_FUNCTION(Runtime_IsInitializedIntlObject) { 226 RUNTIME_FUNCTION(Runtime_IsInitializedIntlObject) {
227 HandleScope scope(isolate); 227 HandleScope scope(isolate);
228 228
229 DCHECK(args.length() == 1); 229 DCHECK(args.length() == 1);
230 230
231 CONVERT_ARG_HANDLE_CHECKED(Object, input, 0); 231 CONVERT_ARG_HANDLE_CHECKED(Object, input, 0);
232 232
233 if (!input->IsJSObject()) return isolate->heap()->false_value(); 233 if (!input->IsJSObject()) return isolate->heap()->false_value();
234 Handle<JSObject> obj = Handle<JSObject>::cast(input); 234 Handle<JSObject> obj = Handle<JSObject>::cast(input);
235 235
236 Handle<Symbol> marker = isolate->factory()->intl_initialized_marker_symbol(); 236 Handle<String> marker = isolate->factory()->intl_initialized_marker_string();
237 Handle<Object> tag = JSObject::GetDataProperty(obj, marker); 237 Handle<Object> tag(obj->GetHiddenProperty(marker), isolate);
238 return isolate->heap()->ToBoolean(!tag->IsUndefined()); 238 return isolate->heap()->ToBoolean(!tag->IsTheHole());
239 } 239 }
240 240
241 241
242 RUNTIME_FUNCTION(Runtime_IsInitializedIntlObjectOfType) { 242 RUNTIME_FUNCTION(Runtime_IsInitializedIntlObjectOfType) {
243 HandleScope scope(isolate); 243 HandleScope scope(isolate);
244 244
245 DCHECK(args.length() == 2); 245 DCHECK(args.length() == 2);
246 246
247 CONVERT_ARG_HANDLE_CHECKED(Object, input, 0); 247 CONVERT_ARG_HANDLE_CHECKED(Object, input, 0);
248 CONVERT_ARG_HANDLE_CHECKED(String, expected_type, 1); 248 CONVERT_ARG_HANDLE_CHECKED(String, expected_type, 1);
249 249
250 if (!input->IsJSObject()) return isolate->heap()->false_value(); 250 if (!input->IsJSObject()) return isolate->heap()->false_value();
251 Handle<JSObject> obj = Handle<JSObject>::cast(input); 251 Handle<JSObject> obj = Handle<JSObject>::cast(input);
252 252
253 Handle<Symbol> marker = isolate->factory()->intl_initialized_marker_symbol(); 253 Handle<String> marker = isolate->factory()->intl_initialized_marker_string();
254 Handle<Object> tag = JSObject::GetDataProperty(obj, marker); 254 Handle<Object> tag(obj->GetHiddenProperty(marker), isolate);
255 return isolate->heap()->ToBoolean(tag->IsString() && 255 return isolate->heap()->ToBoolean(tag->IsString() &&
256 String::cast(*tag)->Equals(*expected_type)); 256 String::cast(*tag)->Equals(*expected_type));
257 } 257 }
258 258
259 259
260 RUNTIME_FUNCTION(Runtime_MarkAsInitializedIntlObjectOfType) { 260 RUNTIME_FUNCTION(Runtime_MarkAsInitializedIntlObjectOfType) {
261 HandleScope scope(isolate); 261 HandleScope scope(isolate);
262 262
263 DCHECK(args.length() == 3); 263 DCHECK(args.length() == 3);
264 264
265 CONVERT_ARG_HANDLE_CHECKED(JSObject, input, 0); 265 CONVERT_ARG_HANDLE_CHECKED(JSObject, input, 0);
266 CONVERT_ARG_HANDLE_CHECKED(String, type, 1); 266 CONVERT_ARG_HANDLE_CHECKED(String, type, 1);
267 CONVERT_ARG_HANDLE_CHECKED(JSObject, impl, 2); 267 CONVERT_ARG_HANDLE_CHECKED(JSObject, impl, 2);
268 268
269 Handle<Symbol> marker = isolate->factory()->intl_initialized_marker_symbol(); 269 Handle<String> marker = isolate->factory()->intl_initialized_marker_string();
270 JSObject::SetProperty(input, marker, type, STRICT).Assert(); 270 JSObject::SetHiddenProperty(input, marker, type);
271 271
272 marker = isolate->factory()->intl_impl_object_symbol(); 272 marker = isolate->factory()->intl_impl_object_string();
273 JSObject::SetProperty(input, marker, impl, STRICT).Assert(); 273 JSObject::SetHiddenProperty(input, marker, impl);
274 274
275 return isolate->heap()->undefined_value(); 275 return isolate->heap()->undefined_value();
276 } 276 }
277 277
278 278
279 RUNTIME_FUNCTION(Runtime_GetImplFromInitializedIntlObject) { 279 RUNTIME_FUNCTION(Runtime_GetImplFromInitializedIntlObject) {
280 HandleScope scope(isolate); 280 HandleScope scope(isolate);
281 281
282 DCHECK(args.length() == 1); 282 DCHECK(args.length() == 1);
283 283
284 CONVERT_ARG_HANDLE_CHECKED(Object, input, 0); 284 CONVERT_ARG_HANDLE_CHECKED(Object, input, 0);
285 285
286 if (!input->IsJSObject()) { 286 if (!input->IsJSObject()) {
287 Vector<Handle<Object> > arguments = HandleVector(&input, 1); 287 Vector<Handle<Object> > arguments = HandleVector(&input, 1);
288 THROW_NEW_ERROR_RETURN_FAILURE(isolate, 288 THROW_NEW_ERROR_RETURN_FAILURE(isolate,
289 NewTypeError("not_intl_object", arguments)); 289 NewTypeError("not_intl_object", arguments));
290 } 290 }
291 291
292 Handle<JSObject> obj = Handle<JSObject>::cast(input); 292 Handle<JSObject> obj = Handle<JSObject>::cast(input);
293 293
294 Handle<Symbol> marker = isolate->factory()->intl_impl_object_symbol(); 294 Handle<String> marker = isolate->factory()->intl_impl_object_string();
295 295 Handle<Object> impl(obj->GetHiddenProperty(marker), isolate);
296 Handle<Object> impl = JSObject::GetDataProperty(obj, marker);
297 if (impl->IsTheHole()) { 296 if (impl->IsTheHole()) {
298 Vector<Handle<Object> > arguments = HandleVector(&obj, 1); 297 Vector<Handle<Object> > arguments = HandleVector(&obj, 1);
299 THROW_NEW_ERROR_RETURN_FAILURE(isolate, 298 THROW_NEW_ERROR_RETURN_FAILURE(isolate,
300 NewTypeError("not_intl_object", arguments)); 299 NewTypeError("not_intl_object", arguments));
301 } 300 }
302 return *impl; 301 return *impl;
303 } 302 }
304 303
305 304
306 RUNTIME_FUNCTION(Runtime_CreateDateTimeFormat) { 305 RUNTIME_FUNCTION(Runtime_CreateDateTimeFormat) {
(...skipping 436 matching lines...) Expand 10 before | Expand all | Expand 10 after
743 } else if (status >= UBRK_WORD_IDEO && status < UBRK_WORD_IDEO_LIMIT) { 742 } else if (status >= UBRK_WORD_IDEO && status < UBRK_WORD_IDEO_LIMIT) {
744 return *isolate->factory()->NewStringFromStaticChars("ideo"); 743 return *isolate->factory()->NewStringFromStaticChars("ideo");
745 } else { 744 } else {
746 return *isolate->factory()->NewStringFromStaticChars("unknown"); 745 return *isolate->factory()->NewStringFromStaticChars("unknown");
747 } 746 }
748 } 747 }
749 } 748 }
750 } // namespace v8::internal 749 } // namespace v8::internal
751 750
752 #endif // V8_I18N_SUPPORT 751 #endif // V8_I18N_SUPPORT
OLDNEW
« no previous file with comments | « src/runtime/runtime.cc ('k') | test/mjsunit/test-hidden-string.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698