Chromium Code Reviews| 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 28 matching lines...) Expand all Loading... | |
| 39 #include "conversions-inl.h" | 39 #include "conversions-inl.h" |
| 40 #include "counters.h" | 40 #include "counters.h" |
| 41 #include "cpu-profiler.h" | 41 #include "cpu-profiler.h" |
| 42 #include "debug.h" | 42 #include "debug.h" |
| 43 #include "deoptimizer.h" | 43 #include "deoptimizer.h" |
| 44 #include "execution.h" | 44 #include "execution.h" |
| 45 #include "global-handles.h" | 45 #include "global-handles.h" |
| 46 #include "heap-profiler.h" | 46 #include "heap-profiler.h" |
| 47 #include "heap-snapshot-generator-inl.h" | 47 #include "heap-snapshot-generator-inl.h" |
| 48 #include "icu_util.h" | 48 #include "icu_util.h" |
| 49 #include "json-parser.h" | |
| 49 #include "messages.h" | 50 #include "messages.h" |
| 50 #ifdef COMPRESS_STARTUP_DATA_BZ2 | 51 #ifdef COMPRESS_STARTUP_DATA_BZ2 |
| 51 #include "natives.h" | 52 #include "natives.h" |
| 52 #endif | 53 #endif |
| 53 #include "parser.h" | 54 #include "parser.h" |
| 54 #include "platform.h" | 55 #include "platform.h" |
| 55 #include "profile-generator-inl.h" | 56 #include "profile-generator-inl.h" |
| 56 #include "property-details.h" | 57 #include "property-details.h" |
| 57 #include "property.h" | 58 #include "property.h" |
| 58 #include "runtime.h" | 59 #include "runtime.h" |
| (...skipping 2541 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2600 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 2601 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
| 2601 if (IsDeadCheck(isolate, "v8::StackFrame::IsConstructor()")) return false; | 2602 if (IsDeadCheck(isolate, "v8::StackFrame::IsConstructor()")) return false; |
| 2602 ENTER_V8(isolate); | 2603 ENTER_V8(isolate); |
| 2603 i::HandleScope scope(isolate); | 2604 i::HandleScope scope(isolate); |
| 2604 i::Handle<i::JSObject> self = Utils::OpenHandle(this); | 2605 i::Handle<i::JSObject> self = Utils::OpenHandle(this); |
| 2605 i::Handle<i::Object> is_constructor = GetProperty(self, "isConstructor"); | 2606 i::Handle<i::Object> is_constructor = GetProperty(self, "isConstructor"); |
| 2606 return is_constructor->IsTrue(); | 2607 return is_constructor->IsTrue(); |
| 2607 } | 2608 } |
| 2608 | 2609 |
| 2609 | 2610 |
| 2611 // --- J S O N --- | |
| 2612 | |
| 2613 Local<Object> JSON::Parse(Local<String> json_string) { | |
| 2614 i::Isolate* isolate = i::Isolate::Current(); | |
| 2615 EnsureInitializedForIsolate(isolate, "v8::JSON::Parse"); | |
| 2616 ENTER_V8(isolate); | |
| 2617 i::HandleScope scope(isolate); | |
| 2618 i::Handle<i::String> source = i::Handle<i::String>( | |
| 2619 Utils::OpenHandle(*json_string)->TryFlattenGetString()); | |
|
Yang
2013/08/05 10:52:35
I would prefer FlattenGetString here. While you ar
| |
| 2620 EXCEPTION_PREAMBLE(isolate); | |
| 2621 i::Handle<i::Object> result; | |
| 2622 if (source->IsSeqOneByteString()) { | |
| 2623 result = i::JsonParser<true>::Parse(source); | |
| 2624 } else { | |
| 2625 result = i::JsonParser<false>::Parse(source); | |
| 2626 } | |
| 2627 has_pending_exception = result.is_null(); | |
| 2628 EXCEPTION_BAILOUT_CHECK(isolate, Local<Object>()); | |
| 2629 return Utils::ToLocal( | |
| 2630 i::Handle<i::JSObject>::cast(scope.CloseAndEscape(result))); | |
| 2631 } | |
| 2632 | |
| 2633 | |
| 2610 // --- D a t a --- | 2634 // --- D a t a --- |
| 2611 | 2635 |
| 2612 bool Value::FullIsUndefined() const { | 2636 bool Value::FullIsUndefined() const { |
| 2613 if (IsDeadCheck(i::Isolate::Current(), "v8::Value::IsUndefined()")) { | 2637 if (IsDeadCheck(i::Isolate::Current(), "v8::Value::IsUndefined()")) { |
| 2614 return false; | 2638 return false; |
| 2615 } | 2639 } |
| 2616 bool result = Utils::OpenHandle(this)->IsUndefined(); | 2640 bool result = Utils::OpenHandle(this)->IsUndefined(); |
| 2617 ASSERT_EQ(result, QuickIsUndefined()); | 2641 ASSERT_EQ(result, QuickIsUndefined()); |
| 2618 return result; | 2642 return result; |
| 2619 } | 2643 } |
| (...skipping 5516 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 8136 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); | 8160 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); |
| 8137 Address callback_address = | 8161 Address callback_address = |
| 8138 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); | 8162 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); |
| 8139 VMState<EXTERNAL> state(isolate); | 8163 VMState<EXTERNAL> state(isolate); |
| 8140 ExternalCallbackScope call_scope(isolate, callback_address); | 8164 ExternalCallbackScope call_scope(isolate, callback_address); |
| 8141 return callback(info); | 8165 return callback(info); |
| 8142 } | 8166 } |
| 8143 | 8167 |
| 8144 | 8168 |
| 8145 } } // namespace v8::internal | 8169 } } // namespace v8::internal |
| OLD | NEW |