func:  WebGLContext::CompileShader(WebGLShader *shader) if ( IsContextLost ( ) )  if ( ! ValidateObject ( "compileShader" , shader ) )  if ( ! mShaderValidation )  if ( ! shader -> NeedsTranslation ( ) )  StripComments stripComments ( shader -> Source ( ) ) ; const nsAString & cleanSource = Substring ( stripComments . result ( ) . Elements ( ) , stripComments . length ( ) ) ; if ( ! ValidateGLSLString ( cleanSource , "compileShader" ) )  NS_LossyConvertUTF16toASCII sourceCString ( cleanSource ) ; if ( gl -> WorkAroundDriverBugs ( ) )  const uint32_t maxSourceLength = 0x3ffff ; if ( sourceCString . Length ( ) > maxSourceLength )  const char * s = sourceCString . get ( ) ; static const char * bypassPrefixSearch = "#version proto-200" ; const bool bypassANGLE = IsWebGL2 ( ) && ( strstr ( s , bypassPrefixSearch ) != 0 ) ; if ( bypassANGLE )  const char * originalShader = strstr ( s , bypassPrefixSearch ) + strlen ( bypassPrefixSearch ) ; int originalShaderSize = strlen ( s ) - ( originalShader - s ) ; int bypassShaderCodeSize = originalShaderSize + 4096 + 1 ; bypassANGLEShaderCode . SetLength ( bypassShaderCodeSize ); bypassDriverShaderCode . SetLength ( bypassShaderCodeSize ); 