| OLD | NEW | 
|---|
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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 <stdlib.h> | 5 #include <stdlib.h> | 
| 6 #include <sstream> | 6 #include <sstream> | 
| 7 #include <utility> | 7 #include <utility> | 
| 8 | 8 | 
| 9 #include "src/api.h" | 9 #include "src/api.h" | 
| 10 #include "src/objects.h" | 10 #include "src/objects.h" | 
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 92   FieldIndex index = FieldIndex::ForPropertyIndex(obj->map(), property_index); | 92   FieldIndex index = FieldIndex::ForPropertyIndex(obj->map(), property_index); | 
| 93   return obj->RawFastPropertyAt(index); | 93   return obj->RawFastPropertyAt(index); | 
| 94 } | 94 } | 
| 95 | 95 | 
| 96 | 96 | 
| 97 static double GetDoubleFieldValue(JSObject* obj, FieldIndex field_index) { | 97 static double GetDoubleFieldValue(JSObject* obj, FieldIndex field_index) { | 
| 98   if (obj->IsUnboxedDoubleField(field_index)) { | 98   if (obj->IsUnboxedDoubleField(field_index)) { | 
| 99     return obj->RawFastDoublePropertyAt(field_index); | 99     return obj->RawFastDoublePropertyAt(field_index); | 
| 100   } else { | 100   } else { | 
| 101     Object* value = obj->RawFastPropertyAt(field_index); | 101     Object* value = obj->RawFastPropertyAt(field_index); | 
| 102     DCHECK(value->IsMutableHeapNumber()); | 102     CHECK(value->IsMutableHeapNumber()); | 
| 103     return HeapNumber::cast(value)->value(); | 103     return HeapNumber::cast(value)->value(); | 
| 104   } | 104   } | 
| 105 } | 105 } | 
| 106 | 106 | 
| 107 | 107 | 
| 108 static double GetDoubleFieldValue(JSObject* obj, int property_index) { | 108 static double GetDoubleFieldValue(JSObject* obj, int property_index) { | 
| 109   FieldIndex index = FieldIndex::ForPropertyIndex(obj->map(), property_index); | 109   FieldIndex index = FieldIndex::ForPropertyIndex(obj->map(), property_index); | 
| 110   return GetDoubleFieldValue(obj, index); | 110   return GetDoubleFieldValue(obj, index); | 
| 111 } | 111 } | 
| 112 | 112 | 
| (...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 571 // This test works only for if the total property count is less than maximum | 571 // This test works only for if the total property count is less than maximum | 
| 572 // in-object properties count. | 572 // in-object properties count. | 
| 573 static void TestClassHierarchy(const std::vector<int>& hierarchy_desc, int n) { | 573 static void TestClassHierarchy(const std::vector<int>& hierarchy_desc, int n) { | 
| 574   int fields_count = 0; | 574   int fields_count = 0; | 
| 575   for (int cur_class = 0; cur_class < n; cur_class++) { | 575   for (int cur_class = 0; cur_class < n; cur_class++) { | 
| 576     std::string class_name = GetClassName(cur_class); | 576     std::string class_name = GetClassName(cur_class); | 
| 577     int fields_count_at_current_level = hierarchy_desc[cur_class]; | 577     int fields_count_at_current_level = hierarchy_desc[cur_class]; | 
| 578     fields_count += fields_count_at_current_level; | 578     fields_count += fields_count_at_current_level; | 
| 579 | 579 | 
| 580     // This test is not suitable for in-object properties count overflow case. | 580     // This test is not suitable for in-object properties count overflow case. | 
| 581     DCHECK_LT(fields_count, kMaxInobjectProperties); | 581     CHECK_LT(fields_count, kMaxInobjectProperties); | 
| 582 | 582 | 
| 583     // Create |class_name| objects and check slack tracking. | 583     // Create |class_name| objects and check slack tracking. | 
| 584     v8::Local<v8::Script> new_script = GetNewObjectScript(class_name); | 584     v8::Local<v8::Script> new_script = GetNewObjectScript(class_name); | 
| 585 | 585 | 
| 586     Handle<JSFunction> func = GetLexical<JSFunction>(class_name); | 586     Handle<JSFunction> func = GetLexical<JSFunction>(class_name); | 
| 587 | 587 | 
| 588     Handle<JSObject> obj = Run<JSObject>(new_script); | 588     Handle<JSObject> obj = Run<JSObject>(new_script); | 
| 589 | 589 | 
| 590     CHECK(func->has_initial_map()); | 590     CHECK(func->has_initial_map()); | 
| 591     Handle<Map> initial_map(func->initial_map()); | 591     Handle<Map> initial_map(func->initial_map()); | 
| (...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1089   TestSubclassBuiltin("A1", JS_PROMISE_TYPE, "Promise", | 1089   TestSubclassBuiltin("A1", JS_PROMISE_TYPE, "Promise", | 
| 1090                       "function(resolve, reject) { resolve('ok'); }", | 1090                       "function(resolve, reject) { resolve('ok'); }", | 
| 1091                       first_field); | 1091                       first_field); | 
| 1092 } | 1092 } | 
| 1093 | 1093 | 
| 1094 | 1094 | 
| 1095 TEST(SubclassPromiseBuiltinNoInlineNew) { | 1095 TEST(SubclassPromiseBuiltinNoInlineNew) { | 
| 1096   FLAG_inline_new = false; | 1096   FLAG_inline_new = false; | 
| 1097   TestSubclassPromiseBuiltin(); | 1097   TestSubclassPromiseBuiltin(); | 
| 1098 } | 1098 } | 
| OLD | NEW | 
|---|