OLD | NEW |
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 906 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
917 if (key == heap_.hidden_symbol()) return true; | 917 if (key == heap_.hidden_symbol()) return true; |
918 | 918 |
919 // Check for compatibility between the security tokens in the | 919 // Check for compatibility between the security tokens in the |
920 // current lexical context and the accessed object. | 920 // current lexical context and the accessed object. |
921 ASSERT(context()); | 921 ASSERT(context()); |
922 | 922 |
923 MayAccessDecision decision = MayAccessPreCheck(this, receiver, type); | 923 MayAccessDecision decision = MayAccessPreCheck(this, receiver, type); |
924 if (decision != UNKNOWN) return decision == YES; | 924 if (decision != UNKNOWN) return decision == YES; |
925 | 925 |
926 // Get named access check callback | 926 // Get named access check callback |
927 JSFunction* constructor = JSFunction::cast(receiver->map()->constructor()); | 927 // TODO(dcarney): revert |
| 928 Map* map = receiver->map(); |
| 929 CHECK(map->IsMap()); |
| 930 CHECK(map->constructor()->IsJSFunction()); |
| 931 JSFunction* constructor = JSFunction::cast(map->constructor()); |
928 if (!constructor->shared()->IsApiFunction()) return false; | 932 if (!constructor->shared()->IsApiFunction()) return false; |
929 | 933 |
930 Object* data_obj = | 934 Object* data_obj = |
931 constructor->shared()->get_api_func_data()->access_check_info(); | 935 constructor->shared()->get_api_func_data()->access_check_info(); |
932 if (data_obj == heap_.undefined_value()) return false; | 936 if (data_obj == heap_.undefined_value()) return false; |
933 | 937 |
934 Object* fun_obj = AccessCheckInfo::cast(data_obj)->named_callback(); | 938 Object* fun_obj = AccessCheckInfo::cast(data_obj)->named_callback(); |
935 v8::NamedSecurityCallback callback = | 939 v8::NamedSecurityCallback callback = |
936 v8::ToCData<v8::NamedSecurityCallback>(fun_obj); | 940 v8::ToCData<v8::NamedSecurityCallback>(fun_obj); |
937 | 941 |
(...skipping 1274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2212 | 2216 |
2213 #ifdef DEBUG | 2217 #ifdef DEBUG |
2214 #define ISOLATE_FIELD_OFFSET(type, name, ignored) \ | 2218 #define ISOLATE_FIELD_OFFSET(type, name, ignored) \ |
2215 const intptr_t Isolate::name##_debug_offset_ = OFFSET_OF(Isolate, name##_); | 2219 const intptr_t Isolate::name##_debug_offset_ = OFFSET_OF(Isolate, name##_); |
2216 ISOLATE_INIT_LIST(ISOLATE_FIELD_OFFSET) | 2220 ISOLATE_INIT_LIST(ISOLATE_FIELD_OFFSET) |
2217 ISOLATE_INIT_ARRAY_LIST(ISOLATE_FIELD_OFFSET) | 2221 ISOLATE_INIT_ARRAY_LIST(ISOLATE_FIELD_OFFSET) |
2218 #undef ISOLATE_FIELD_OFFSET | 2222 #undef ISOLATE_FIELD_OFFSET |
2219 #endif | 2223 #endif |
2220 | 2224 |
2221 } } // namespace v8::internal | 2225 } } // namespace v8::internal |
OLD | NEW |