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

Side by Side Diff: src/isolate.cc

Issue 2181323002: Make some crucial Isolate functions inlineable (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: revert overzealous inlining Created 4 years, 4 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
« no previous file with comments | « src/isolate.h ('k') | src/isolate-inl.h » ('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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 "src/isolate.h" 5 #include "src/isolate.h"
6 6
7 #include <stdlib.h> 7 #include <stdlib.h>
8 8
9 #include <fstream> // NOLINT(readability/streams) 9 #include <fstream> // NOLINT(readability/streams)
10 #include <sstream> 10 #include <sstream>
(...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after
508 helper.CountSloppyFrames(*fun); 508 helper.CountSloppyFrames(*fun);
509 509
510 Handle<Code> code = handle(exit_frame->LookupCode(), this); 510 Handle<Code> code = handle(exit_frame->LookupCode(), this);
511 int offset = 511 int offset =
512 static_cast<int>(exit_frame->pc() - code->instruction_start()); 512 static_cast<int>(exit_frame->pc() - code->instruction_start());
513 513
514 // In order to help CallSite::IsConstructor detect builtin constructors, 514 // In order to help CallSite::IsConstructor detect builtin constructors,
515 // we reuse the receiver field to pass along a special symbol. 515 // we reuse the receiver field to pass along a special symbol.
516 Handle<Object> recv; 516 Handle<Object> recv;
517 if (exit_frame->IsConstructor()) { 517 if (exit_frame->IsConstructor()) {
518 recv = handle(heap()->call_site_constructor_symbol(), this); 518 recv = factory()->call_site_constructor_symbol();
519 } else { 519 } else {
520 recv = handle(exit_frame->receiver(), this); 520 recv = handle(exit_frame->receiver(), this);
521 } 521 }
522 522
523 elements = MaybeGrow(this, elements, cursor, cursor + 4); 523 elements = MaybeGrow(this, elements, cursor, cursor + 4);
524 elements->set(cursor++, *recv); 524 elements->set(cursor++, *recv);
525 elements->set(cursor++, *fun); 525 elements->set(cursor++, *fun);
526 elements->set(cursor++, *code); 526 elements->set(cursor++, *code);
527 elements->set(cursor++, Smi::FromInt(offset)); 527 elements->set(cursor++, Smi::FromInt(offset));
528 frames_seen++; 528 frames_seen++;
529 } break; 529 } break;
530 530
531 case StackFrame::WASM: { 531 case StackFrame::WASM: {
532 WasmFrame* wasm_frame = WasmFrame::cast(frame); 532 WasmFrame* wasm_frame = WasmFrame::cast(frame);
533 Code* code = wasm_frame->unchecked_code(); 533 Code* code = wasm_frame->unchecked_code();
534 Handle<AbstractCode> abstract_code = 534 Handle<AbstractCode> abstract_code =
535 Handle<AbstractCode>(AbstractCode::cast(code)); 535 Handle<AbstractCode>(AbstractCode::cast(code), this);
536 int offset = 536 int offset =
537 static_cast<int>(wasm_frame->pc() - code->instruction_start()); 537 static_cast<int>(wasm_frame->pc() - code->instruction_start());
538 elements = MaybeGrow(this, elements, cursor, cursor + 4); 538 elements = MaybeGrow(this, elements, cursor, cursor + 4);
539 elements->set(cursor++, wasm_frame->wasm_obj()); 539 elements->set(cursor++, wasm_frame->wasm_obj());
540 elements->set(cursor++, Smi::FromInt(wasm_frame->function_index())); 540 elements->set(cursor++, Smi::FromInt(wasm_frame->function_index()));
541 elements->set(cursor++, *abstract_code); 541 elements->set(cursor++, *abstract_code);
542 elements->set(cursor++, Smi::FromInt(offset)); 542 elements->set(cursor++, Smi::FromInt(offset));
543 frames_seen++; 543 frames_seen++;
544 } break; 544 } break;
545 545
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
635 Handle<JSObject> NewStackFrameObject(FrameSummary& summ) { 635 Handle<JSObject> NewStackFrameObject(FrameSummary& summ) {
636 int position = summ.abstract_code()->SourcePosition(summ.code_offset()); 636 int position = summ.abstract_code()->SourcePosition(summ.code_offset());
637 return NewStackFrameObject(summ.function(), position, 637 return NewStackFrameObject(summ.function(), position,
638 summ.is_constructor()); 638 summ.is_constructor());
639 } 639 }
640 640
641 Handle<JSObject> NewStackFrameObject(Handle<JSFunction> fun, int position, 641 Handle<JSObject> NewStackFrameObject(Handle<JSFunction> fun, int position,
642 bool is_constructor) { 642 bool is_constructor) {
643 Handle<JSObject> stack_frame = 643 Handle<JSObject> stack_frame =
644 factory()->NewJSObject(isolate_->object_function()); 644 factory()->NewJSObject(isolate_->object_function());
645 Handle<Script> script(Script::cast(fun->shared()->script())); 645 Handle<Script> script(Script::cast(fun->shared()->script()), isolate_);
646 646
647 if (!line_key_.is_null()) { 647 if (!line_key_.is_null()) {
648 Script::PositionInfo info; 648 Script::PositionInfo info;
649 bool valid_pos = 649 bool valid_pos =
650 script->GetPositionInfo(position, &info, Script::WITH_OFFSET); 650 script->GetPositionInfo(position, &info, Script::WITH_OFFSET);
651 651
652 if (!column_key_.is_null() && valid_pos) { 652 if (!column_key_.is_null() && valid_pos) {
653 JSObject::AddProperty(stack_frame, column_key_, 653 JSObject::AddProperty(stack_frame, column_key_,
654 handle(Smi::FromInt(info.column + 1), isolate_), 654 handle(Smi::FromInt(info.column + 1), isolate_),
655 NONE); 655 NONE);
(...skipping 741 matching lines...) Expand 10 before | Expand all | Expand 10 after
1397 } else { 1397 } else {
1398 DCHECK(frame->is_java_script() || frame->is_wasm()); 1398 DCHECK(frame->is_java_script() || frame->is_wasm());
1399 Code* code = frame->LookupCode(); 1399 Code* code = frame->LookupCode();
1400 abstract_code = AbstractCode::cast(code); 1400 abstract_code = AbstractCode::cast(code);
1401 code_offset = static_cast<int>(frame->pc() - code->instruction_start()); 1401 code_offset = static_cast<int>(frame->pc() - code->instruction_start());
1402 } 1402 }
1403 int pos = abstract_code->SourcePosition(code_offset); 1403 int pos = abstract_code->SourcePosition(code_offset);
1404 JavaScriptFrame* js_frame = JavaScriptFrame::cast(frame); 1404 JavaScriptFrame* js_frame = JavaScriptFrame::cast(frame);
1405 Handle<Object> pos_obj(Smi::FromInt(pos), this); 1405 Handle<Object> pos_obj(Smi::FromInt(pos), this);
1406 // Fetch function and receiver. 1406 // Fetch function and receiver.
1407 Handle<JSFunction> fun(js_frame->function()); 1407 Handle<JSFunction> fun(js_frame->function(), this);
1408 Handle<Object> recv(js_frame->receiver(), this); 1408 Handle<Object> recv(js_frame->receiver(), this);
1409 // Advance to the next JavaScript frame and determine if the 1409 // Advance to the next JavaScript frame and determine if the
1410 // current frame is the top-level frame. 1410 // current frame is the top-level frame.
1411 it.Advance(); 1411 it.Advance();
1412 Handle<Object> is_top_level = factory()->ToBoolean(it.done()); 1412 Handle<Object> is_top_level = factory()->ToBoolean(it.done());
1413 // Generate and print stack trace line. 1413 // Generate and print stack trace line.
1414 Handle<String> line = 1414 Handle<String> line =
1415 Execution::GetStackTraceLine(recv, fun, pos_obj, is_top_level); 1415 Execution::GetStackTraceLine(recv, fun, pos_obj, is_top_level);
1416 if (line->length() > 0) { 1416 if (line->length() > 0) {
1417 line->PrintOn(out); 1417 line->PrintOn(out);
1418 PrintF(out, "\n"); 1418 PrintF(out, "\n");
1419 } 1419 }
1420 } 1420 }
1421 } 1421 }
1422 1422
1423 bool Isolate::ComputeLocation(MessageLocation* target) { 1423 bool Isolate::ComputeLocation(MessageLocation* target) {
1424 StackTraceFrameIterator it(this); 1424 StackTraceFrameIterator it(this);
1425 if (it.done()) return false; 1425 if (it.done()) return false;
1426 StandardFrame* frame = it.frame(); 1426 StandardFrame* frame = it.frame();
1427 // TODO(clemensh): handle wasm frames 1427 // TODO(clemensh): handle wasm frames
1428 if (!frame->is_java_script()) return false; 1428 if (!frame->is_java_script()) return false;
1429 JSFunction* fun = JavaScriptFrame::cast(frame)->function(); 1429 JSFunction* fun = JavaScriptFrame::cast(frame)->function();
1430 Object* script = fun->shared()->script(); 1430 Object* script = fun->shared()->script();
1431 if (!script->IsScript() || 1431 if (!script->IsScript() ||
1432 (Script::cast(script)->source()->IsUndefined(this))) { 1432 (Script::cast(script)->source()->IsUndefined(this))) {
1433 return false; 1433 return false;
1434 } 1434 }
1435 Handle<Script> casted_script(Script::cast(script)); 1435 Handle<Script> casted_script(Script::cast(script), this);
1436 // Compute the location from the function and the relocation info of the 1436 // Compute the location from the function and the relocation info of the
1437 // baseline code. For optimized code this will use the deoptimization 1437 // baseline code. For optimized code this will use the deoptimization
1438 // information to get canonical location information. 1438 // information to get canonical location information.
1439 List<FrameSummary> frames(FLAG_max_inlining_levels + 1); 1439 List<FrameSummary> frames(FLAG_max_inlining_levels + 1);
1440 JavaScriptFrame::cast(frame)->Summarize(&frames); 1440 JavaScriptFrame::cast(frame)->Summarize(&frames);
1441 FrameSummary& summary = frames.last(); 1441 FrameSummary& summary = frames.last();
1442 int pos = summary.abstract_code()->SourcePosition(summary.code_offset()); 1442 int pos = summary.abstract_code()->SourcePosition(summary.code_offset());
1443 *target = MessageLocation(casted_script, pos, pos + 1, handle(fun)); 1443 *target = MessageLocation(casted_script, pos, pos + 1, handle(fun, this));
1444 return true; 1444 return true;
1445 } 1445 }
1446 1446
1447 bool Isolate::ComputeLocationFromException(MessageLocation* target, 1447 bool Isolate::ComputeLocationFromException(MessageLocation* target,
1448 Handle<Object> exception) { 1448 Handle<Object> exception) {
1449 if (!exception->IsJSObject()) return false; 1449 if (!exception->IsJSObject()) return false;
1450 1450
1451 Handle<Name> start_pos_symbol = factory()->error_start_pos_symbol(); 1451 Handle<Name> start_pos_symbol = factory()->error_start_pos_symbol();
1452 Handle<Object> start_pos = JSReceiver::GetDataProperty( 1452 Handle<Object> start_pos = JSReceiver::GetDataProperty(
1453 Handle<JSObject>::cast(exception), start_pos_symbol); 1453 Handle<JSObject>::cast(exception), start_pos_symbol);
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
1613 // Only report the exception if the external handler is verbose. 1613 // Only report the exception if the external handler is verbose.
1614 should_report_exception = try_catch_handler()->is_verbose_; 1614 should_report_exception = try_catch_handler()->is_verbose_;
1615 } else { 1615 } else {
1616 // Report the exception if it isn't caught by JavaScript code. 1616 // Report the exception if it isn't caught by JavaScript code.
1617 should_report_exception = !IsJavaScriptHandlerOnTop(exception); 1617 should_report_exception = !IsJavaScriptHandlerOnTop(exception);
1618 } 1618 }
1619 1619
1620 // Actually report the pending message to all message handlers. 1620 // Actually report the pending message to all message handlers.
1621 if (!message_obj->IsTheHole(this) && should_report_exception) { 1621 if (!message_obj->IsTheHole(this) && should_report_exception) {
1622 HandleScope scope(this); 1622 HandleScope scope(this);
1623 Handle<JSMessageObject> message(JSMessageObject::cast(message_obj)); 1623 Handle<JSMessageObject> message(JSMessageObject::cast(message_obj), this);
1624 Handle<JSValue> script_wrapper(JSValue::cast(message->script())); 1624 Handle<JSValue> script_wrapper(JSValue::cast(message->script()), this);
1625 Handle<Script> script(Script::cast(script_wrapper->value())); 1625 Handle<Script> script(Script::cast(script_wrapper->value()), this);
1626 int start_pos = message->start_position(); 1626 int start_pos = message->start_position();
1627 int end_pos = message->end_position(); 1627 int end_pos = message->end_position();
1628 MessageLocation location(script, start_pos, end_pos); 1628 MessageLocation location(script, start_pos, end_pos);
1629 MessageHandler::ReportMessage(this, &location, message); 1629 MessageHandler::ReportMessage(this, &location, message);
1630 } 1630 }
1631 } 1631 }
1632 1632
1633 1633
1634 MessageLocation Isolate::GetMessageLocation() { 1634 MessageLocation Isolate::GetMessageLocation() {
1635 DCHECK(has_pending_exception()); 1635 DCHECK(has_pending_exception());
1636 1636
1637 if (thread_local_top_.pending_exception_ != heap()->termination_exception() && 1637 if (thread_local_top_.pending_exception_ != heap()->termination_exception() &&
1638 !thread_local_top_.pending_message_obj_->IsTheHole(this)) { 1638 !thread_local_top_.pending_message_obj_->IsTheHole(this)) {
1639 Handle<JSMessageObject> message_obj( 1639 Handle<JSMessageObject> message_obj(
1640 JSMessageObject::cast(thread_local_top_.pending_message_obj_)); 1640 JSMessageObject::cast(thread_local_top_.pending_message_obj_), this);
1641 Handle<JSValue> script_wrapper(JSValue::cast(message_obj->script())); 1641 Handle<JSValue> script_wrapper(JSValue::cast(message_obj->script()), this);
1642 Handle<Script> script(Script::cast(script_wrapper->value())); 1642 Handle<Script> script(Script::cast(script_wrapper->value()), this);
1643 int start_pos = message_obj->start_position(); 1643 int start_pos = message_obj->start_position();
1644 int end_pos = message_obj->end_position(); 1644 int end_pos = message_obj->end_position();
1645 return MessageLocation(script, start_pos, end_pos); 1645 return MessageLocation(script, start_pos, end_pos);
1646 } 1646 }
1647 1647
1648 return MessageLocation(); 1648 return MessageLocation();
1649 } 1649 }
1650 1650
1651 1651
1652 bool Isolate::OptionalRescheduleException(bool is_bottom_call) { 1652 bool Isolate::OptionalRescheduleException(bool is_bottom_call) {
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
1742 stack_trace_for_uncaught_exceptions_options_ = options; 1742 stack_trace_for_uncaught_exceptions_options_ = options;
1743 } 1743 }
1744 1744
1745 1745
1746 void Isolate::SetAbortOnUncaughtExceptionCallback( 1746 void Isolate::SetAbortOnUncaughtExceptionCallback(
1747 v8::Isolate::AbortOnUncaughtExceptionCallback callback) { 1747 v8::Isolate::AbortOnUncaughtExceptionCallback callback) {
1748 abort_on_uncaught_exception_callback_ = callback; 1748 abort_on_uncaught_exception_callback_ = callback;
1749 } 1749 }
1750 1750
1751 1751
1752 Handle<Context> Isolate::native_context() {
1753 return handle(context()->native_context());
1754 }
1755
1756
1757 Handle<Context> Isolate::GetCallingNativeContext() { 1752 Handle<Context> Isolate::GetCallingNativeContext() {
1758 JavaScriptFrameIterator it(this); 1753 JavaScriptFrameIterator it(this);
1759 if (debug_->in_debug_scope()) { 1754 if (debug_->in_debug_scope()) {
1760 while (!it.done()) { 1755 while (!it.done()) {
1761 JavaScriptFrame* frame = it.frame(); 1756 JavaScriptFrame* frame = it.frame();
1762 Context* context = Context::cast(frame->context()); 1757 Context* context = Context::cast(frame->context());
1763 if (context->native_context() == *debug_->debug_context()) { 1758 if (context->native_context() == *debug_->debug_context()) {
1764 it.Advance(); 1759 it.Advance();
1765 } else { 1760 } else {
1766 break; 1761 break;
1767 } 1762 }
1768 } 1763 }
1769 } 1764 }
1770 if (it.done()) return Handle<Context>::null(); 1765 if (it.done()) return Handle<Context>::null();
1771 JavaScriptFrame* frame = it.frame(); 1766 JavaScriptFrame* frame = it.frame();
1772 Context* context = Context::cast(frame->context()); 1767 Context* context = Context::cast(frame->context());
1773 return Handle<Context>(context->native_context()); 1768 return Handle<Context>(context->native_context(), this);
1774 } 1769 }
1775 1770
1776 1771
1777 char* Isolate::ArchiveThread(char* to) { 1772 char* Isolate::ArchiveThread(char* to) {
1778 MemCopy(to, reinterpret_cast<char*>(thread_local_top()), 1773 MemCopy(to, reinterpret_cast<char*>(thread_local_top()),
1779 sizeof(ThreadLocalTop)); 1774 sizeof(ThreadLocalTop));
1780 InitializeThreadLocal(); 1775 InitializeThreadLocal();
1781 clear_pending_exception(); 1776 clear_pending_exception();
1782 clear_pending_message(); 1777 clear_pending_message();
1783 clear_scheduled_exception(); 1778 clear_scheduled_exception();
(...skipping 1017 matching lines...) Expand 10 before | Expand all | Expand 10 after
2801 void Isolate::RemoveBeforeCallEnteredCallback( 2796 void Isolate::RemoveBeforeCallEnteredCallback(
2802 BeforeCallEnteredCallback callback) { 2797 BeforeCallEnteredCallback callback) {
2803 for (int i = 0; i < before_call_entered_callbacks_.length(); i++) { 2798 for (int i = 0; i < before_call_entered_callbacks_.length(); i++) {
2804 if (callback == before_call_entered_callbacks_.at(i)) { 2799 if (callback == before_call_entered_callbacks_.at(i)) {
2805 before_call_entered_callbacks_.Remove(i); 2800 before_call_entered_callbacks_.Remove(i);
2806 } 2801 }
2807 } 2802 }
2808 } 2803 }
2809 2804
2810 2805
2811 void Isolate::FireBeforeCallEnteredCallback() {
2812 for (int i = 0; i < before_call_entered_callbacks_.length(); i++) {
2813 before_call_entered_callbacks_.at(i)(reinterpret_cast<v8::Isolate*>(this));
2814 }
2815 }
2816
2817
2818 void Isolate::AddCallCompletedCallback(CallCompletedCallback callback) { 2806 void Isolate::AddCallCompletedCallback(CallCompletedCallback callback) {
2819 for (int i = 0; i < call_completed_callbacks_.length(); i++) { 2807 for (int i = 0; i < call_completed_callbacks_.length(); i++) {
2820 if (callback == call_completed_callbacks_.at(i)) return; 2808 if (callback == call_completed_callbacks_.at(i)) return;
2821 } 2809 }
2822 call_completed_callbacks_.Add(callback); 2810 call_completed_callbacks_.Add(callback);
2823 } 2811 }
2824 2812
2825 2813
2826 void Isolate::RemoveCallCompletedCallback(CallCompletedCallback callback) { 2814 void Isolate::RemoveCallCompletedCallback(CallCompletedCallback callback) {
2827 for (int i = 0; i < call_completed_callbacks_.length(); i++) { 2815 for (int i = 0; i < call_completed_callbacks_.length(); i++) {
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
3019 // deoptimize only those functions that are affected by the change of this 3007 // deoptimize only those functions that are affected by the change of this
3020 // flag. 3008 // flag.
3021 internal::Deoptimizer::DeoptimizeAll(this); 3009 internal::Deoptimizer::DeoptimizeAll(this);
3022 } 3010 }
3023 3011
3024 // Heap::detached_contexts tracks detached contexts as pairs 3012 // Heap::detached_contexts tracks detached contexts as pairs
3025 // (number of GC since the context was detached, the context). 3013 // (number of GC since the context was detached, the context).
3026 void Isolate::AddDetachedContext(Handle<Context> context) { 3014 void Isolate::AddDetachedContext(Handle<Context> context) {
3027 HandleScope scope(this); 3015 HandleScope scope(this);
3028 Handle<WeakCell> cell = factory()->NewWeakCell(context); 3016 Handle<WeakCell> cell = factory()->NewWeakCell(context);
3029 Handle<FixedArray> detached_contexts(heap()->detached_contexts()); 3017 Handle<FixedArray> detached_contexts = factory()->detached_contexts();
3030 int length = detached_contexts->length(); 3018 int length = detached_contexts->length();
3031 detached_contexts = factory()->CopyFixedArrayAndGrow(detached_contexts, 2); 3019 detached_contexts = factory()->CopyFixedArrayAndGrow(detached_contexts, 2);
3032 detached_contexts->set(length, Smi::FromInt(0)); 3020 detached_contexts->set(length, Smi::FromInt(0));
3033 detached_contexts->set(length + 1, *cell); 3021 detached_contexts->set(length + 1, *cell);
3034 heap()->set_detached_contexts(*detached_contexts); 3022 heap()->set_detached_contexts(*detached_contexts);
3035 } 3023 }
3036 3024
3037 3025
3038 void Isolate::CheckDetachedContextsAfterGC() { 3026 void Isolate::CheckDetachedContextsAfterGC() {
3039 HandleScope scope(this); 3027 HandleScope scope(this);
3040 Handle<FixedArray> detached_contexts(heap()->detached_contexts()); 3028 Handle<FixedArray> detached_contexts = factory()->detached_contexts();
3041 int length = detached_contexts->length(); 3029 int length = detached_contexts->length();
3042 if (length == 0) return; 3030 if (length == 0) return;
3043 int new_length = 0; 3031 int new_length = 0;
3044 for (int i = 0; i < length; i += 2) { 3032 for (int i = 0; i < length; i += 2) {
3045 int mark_sweeps = Smi::cast(detached_contexts->get(i))->value(); 3033 int mark_sweeps = Smi::cast(detached_contexts->get(i))->value();
3046 DCHECK(detached_contexts->get(i + 1)->IsWeakCell()); 3034 DCHECK(detached_contexts->get(i + 1)->IsWeakCell());
3047 WeakCell* cell = WeakCell::cast(detached_contexts->get(i + 1)); 3035 WeakCell* cell = WeakCell::cast(detached_contexts->get(i + 1));
3048 if (!cell->cleared()) { 3036 if (!cell->cleared()) {
3049 detached_contexts->set(new_length, Smi::FromInt(mark_sweeps + 1)); 3037 detached_contexts->set(new_length, Smi::FromInt(mark_sweeps + 1));
3050 detached_contexts->set(new_length + 1, cell); 3038 detached_contexts->set(new_length + 1, cell);
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
3121 // Then check whether this scope intercepts. 3109 // Then check whether this scope intercepts.
3122 if ((flag & intercept_mask_)) { 3110 if ((flag & intercept_mask_)) {
3123 intercepted_flags_ |= flag; 3111 intercepted_flags_ |= flag;
3124 return true; 3112 return true;
3125 } 3113 }
3126 return false; 3114 return false;
3127 } 3115 }
3128 3116
3129 } // namespace internal 3117 } // namespace internal
3130 } // namespace v8 3118 } // namespace v8
OLDNEW
« no previous file with comments | « src/isolate.h ('k') | src/isolate-inl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698