OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 3192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3203 } | 3203 } |
3204 | 3204 |
3205 | 3205 |
3206 bool v8::Object::SetHiddenValue(v8::Handle<v8::String> key, | 3206 bool v8::Object::SetHiddenValue(v8::Handle<v8::String> key, |
3207 v8::Handle<v8::Value> value) { | 3207 v8::Handle<v8::Value> value) { |
3208 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 3208 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
3209 ON_BAILOUT(isolate, "v8::Object::SetHiddenValue()", return false); | 3209 ON_BAILOUT(isolate, "v8::Object::SetHiddenValue()", return false); |
3210 ENTER_V8(isolate); | 3210 ENTER_V8(isolate); |
3211 i::HandleScope scope(isolate); | 3211 i::HandleScope scope(isolate); |
3212 i::Handle<i::JSObject> self = Utils::OpenHandle(this); | 3212 i::Handle<i::JSObject> self = Utils::OpenHandle(this); |
3213 i::Handle<i::Object> hidden_props(i::GetHiddenProperties( | 3213 i::Handle<i::String> key_obj = Utils::OpenHandle(*key); |
3214 self, | |
3215 i::ALLOW_CREATION)); | |
3216 i::Handle<i::Object> key_obj = Utils::OpenHandle(*key); | |
3217 i::Handle<i::Object> value_obj = Utils::OpenHandle(*value); | 3214 i::Handle<i::Object> value_obj = Utils::OpenHandle(*value); |
3218 EXCEPTION_PREAMBLE(isolate); | 3215 i::Handle<i::Object> result = i::SetHiddenProperty(self, key_obj, value_obj); |
3219 i::Handle<i::Object> obj = i::SetProperty( | 3216 return *result == *self; |
3220 hidden_props, | |
3221 key_obj, | |
3222 value_obj, | |
3223 static_cast<PropertyAttributes>(None), | |
3224 i::kNonStrictMode); | |
3225 has_pending_exception = obj.is_null(); | |
3226 EXCEPTION_BAILOUT_CHECK(isolate, false); | |
3227 return true; | |
3228 } | 3217 } |
3229 | 3218 |
3230 | 3219 |
3231 v8::Local<v8::Value> v8::Object::GetHiddenValue(v8::Handle<v8::String> key) { | 3220 v8::Local<v8::Value> v8::Object::GetHiddenValue(v8::Handle<v8::String> key) { |
3232 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 3221 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
3233 ON_BAILOUT(isolate, "v8::Object::GetHiddenValue()", | 3222 ON_BAILOUT(isolate, "v8::Object::GetHiddenValue()", |
3234 return Local<v8::Value>()); | 3223 return Local<v8::Value>()); |
3235 ENTER_V8(isolate); | 3224 ENTER_V8(isolate); |
3236 i::Handle<i::JSObject> self = Utils::OpenHandle(this); | 3225 i::Handle<i::JSObject> self = Utils::OpenHandle(this); |
3237 i::Handle<i::Object> hidden_props(i::GetHiddenProperties( | |
3238 self, | |
3239 i::OMIT_CREATION)); | |
3240 if (hidden_props->IsUndefined()) { | |
3241 return v8::Local<v8::Value>(); | |
3242 } | |
3243 i::Handle<i::String> key_obj = Utils::OpenHandle(*key); | 3226 i::Handle<i::String> key_obj = Utils::OpenHandle(*key); |
3244 EXCEPTION_PREAMBLE(isolate); | 3227 i::Handle<i::Object> result(self->GetHiddenProperty(*key_obj)); |
3245 i::Handle<i::Object> result = i::GetProperty(hidden_props, key_obj); | 3228 if (result->IsUndefined()) return v8::Local<v8::Value>(); |
3246 has_pending_exception = result.is_null(); | |
3247 EXCEPTION_BAILOUT_CHECK(isolate, v8::Local<v8::Value>()); | |
3248 if (result->IsUndefined()) { | |
3249 return v8::Local<v8::Value>(); | |
3250 } | |
3251 return Utils::ToLocal(result); | 3229 return Utils::ToLocal(result); |
3252 } | 3230 } |
3253 | 3231 |
3254 | 3232 |
3255 bool v8::Object::DeleteHiddenValue(v8::Handle<v8::String> key) { | 3233 bool v8::Object::DeleteHiddenValue(v8::Handle<v8::String> key) { |
3256 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 3234 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
3257 ON_BAILOUT(isolate, "v8::DeleteHiddenValue()", return false); | 3235 ON_BAILOUT(isolate, "v8::DeleteHiddenValue()", return false); |
3258 ENTER_V8(isolate); | 3236 ENTER_V8(isolate); |
3259 i::HandleScope scope(isolate); | 3237 i::HandleScope scope(isolate); |
3260 i::Handle<i::JSObject> self = Utils::OpenHandle(this); | 3238 i::Handle<i::JSObject> self = Utils::OpenHandle(this); |
3261 i::Handle<i::Object> hidden_props(i::GetHiddenProperties( | |
3262 self, | |
3263 i::OMIT_CREATION)); | |
3264 if (hidden_props->IsUndefined()) { | |
3265 return true; | |
3266 } | |
3267 i::Handle<i::JSObject> js_obj(i::JSObject::cast(*hidden_props)); | |
3268 i::Handle<i::String> key_obj = Utils::OpenHandle(*key); | 3239 i::Handle<i::String> key_obj = Utils::OpenHandle(*key); |
3269 return i::DeleteProperty(js_obj, key_obj)->IsTrue(); | 3240 self->DeleteHiddenProperty(*key_obj); |
| 3241 return true; |
3270 } | 3242 } |
3271 | 3243 |
3272 | 3244 |
3273 namespace { | 3245 namespace { |
3274 | 3246 |
3275 static i::ElementsKind GetElementsKindFromExternalArrayType( | 3247 static i::ElementsKind GetElementsKindFromExternalArrayType( |
3276 ExternalArrayType array_type) { | 3248 ExternalArrayType array_type) { |
3277 switch (array_type) { | 3249 switch (array_type) { |
3278 case kExternalByteArray: | 3250 case kExternalByteArray: |
3279 return i::EXTERNAL_BYTE_ELEMENTS; | 3251 return i::EXTERNAL_BYTE_ELEMENTS; |
(...skipping 2813 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6093 | 6065 |
6094 | 6066 |
6095 char* HandleScopeImplementer::Iterate(ObjectVisitor* v, char* storage) { | 6067 char* HandleScopeImplementer::Iterate(ObjectVisitor* v, char* storage) { |
6096 HandleScopeImplementer* scope_implementer = | 6068 HandleScopeImplementer* scope_implementer = |
6097 reinterpret_cast<HandleScopeImplementer*>(storage); | 6069 reinterpret_cast<HandleScopeImplementer*>(storage); |
6098 scope_implementer->IterateThis(v); | 6070 scope_implementer->IterateThis(v); |
6099 return storage + ArchiveSpacePerThread(); | 6071 return storage + ArchiveSpacePerThread(); |
6100 } | 6072 } |
6101 | 6073 |
6102 } } // namespace v8::internal | 6074 } } // namespace v8::internal |
OLD | NEW |