Ignore:
Timestamp:
Feb 25, 2015, 2:29:26 PM (10 years ago)
Author:
[email protected]
Message:

Make ParserError immutable by design
https://bugs.webkit.org/show_bug.cgi?id=141955

Reviewed by Geoffrey Garen.

This patch enforce that no field of ParserError can
be modified after the constructor.

  • parser/ParserError.h:

Move the attributes to pack the integer + 2 bytes together.
This is irrelevant for memory impact, it is to remve a load-store
when copying by value.

Also move the attributes to be private.

(JSC::ParserError::isValid):
To client of the interface cared about the type of the error,
the only information needed was: is there an error.

(JSC::ParserError::ParserError):
(JSC::ParserError::syntaxErrorType):
(JSC::ParserError::token):
(JSC::ParserError::message):
(JSC::ParserError::line):
(JSC::ParserError::toErrorObject):

  • API/JSScriptRef.cpp:
  • builtins/BuiltinExecutables.cpp:

(JSC::BuiltinExecutables::createBuiltinExecutable):

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::generateFunctionCodeBlock):
(JSC::UnlinkedFunctionExecutable::fromGlobalCode):
(JSC::UnlinkedFunctionExecutable::codeBlockFor):

  • bytecode/UnlinkedCodeBlock.h:
  • inspector/agents/InspectorRuntimeAgent.cpp:

(Inspector::InspectorRuntimeAgent::parse):

  • jsc.cpp:

(runInteractive):

  • parser/Parser.h:

(JSC::parse):

  • runtime/CodeCache.cpp:

(JSC::CodeCache::getGlobalCodeBlock):
(JSC::CodeCache::getFunctionExecutableFromGlobalCode):

  • runtime/CodeCache.h:
  • runtime/Completion.h:
  • runtime/Executable.cpp:

(JSC::ProgramExecutable::checkSyntax):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::createProgramCodeBlock):
(JSC::JSGlobalObject::createEvalCodeBlock):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/API/JSScriptRef.cpp

    r176825 r180637  
    9090    if (!parseScript(vm, SourceCode(result), error)) {
    9191        if (errorMessage)
    92             *errorMessage = OpaqueJSString::create(error.m_message).leakRef();
     92            *errorMessage = OpaqueJSString::create(error.message()).leakRef();
    9393        if (errorLine)
    94             *errorLine = error.m_line;
    95         return 0;
     94            *errorLine = error.line();
     95        return nullptr;
    9696    }
    9797
     
    111111    if (!parseScript(vm, SourceCode(result), error)) {
    112112        if (errorMessage)
    113             *errorMessage = OpaqueJSString::create(error.m_message).leakRef();
     113            *errorMessage = OpaqueJSString::create(error.message()).leakRef();
    114114        if (errorLine)
    115             *errorLine = error.m_line;
    116         return 0;
     115            *errorLine = error.line();
     116        return nullptr;
    117117    }
    118118
Note: See TracChangeset for help on using the changeset viewer.